2009/02/23

デュアルディスプレイ用の壁紙を作る

普段、ノートPCを普通のディスプレイにつないでデュアルディスプレイとして使っているのだが、画面のサイズが大分違うので、ちょうど良い壁紙がないのがちょっと悲しい。
そこで、お気に入りの壁紙をデュアルディスプレイ用に作り変えることにした。
 (ImageMagickを使うので、インストールされていない場合はインストールしておく。)

 画サイズは 1280x800 と 1920x1200。

 まず、left.jpg(1280x800)とright.jpg(1920x1200)の壁紙を用意する。
> convert -extent 1280x1200 left.jpg - | convert +append - right.jpg wallpaper001.jpg

これで、wallpaper001.jpg という壁紙ができる。

あとは、壁紙設定で「並べて表示」を選択すればよい。

一応、備忘録的に説明しておくと

> convert -extent 1280x1200 left.jpg -

これで left.jpg の下に400pixelの空白がくっついて、高さが 1200 になる。
出力画像を - にしておくと、標準出力に吐き出す。

> convert +append - right.jpg wallpaper001.jpg

+append は二枚の画像を横に結合。
-appendだと縦に結合する。
ここでも、- を使うことによって、入力を標準入力からとっている。

おまけ:↓ここの壁紙が種類がいっぱいあってお気に入り
InterfaceLIFT: High-Resolution Widescreen Wallpaper

2009/02/18

自作カスタムコントロールをツールボックスに加える

@ Visual C# 2008 Express Edition

自分で作ったカスタムコントロールは、以下のようにしてツールボックスに加えることが出来る。


  • [ツール] - [ツールボックスアイテムの選択]
  • [参照] - 作ったDLL


    2009/02/17

    Visual C# でカスタムコントロールを作る

    @Visual C# 2008 Express Edition

    Visual C# でアプリケーションを作っていると、独自のコントロールを作りたくなってくる。
    .Net はカスタムコントロールを作るのが超簡単。

    以下、その手順。

    • [ファイル] - [新しいプロジェクト] - [クラスライブラリ]
    • Class1.cs を削除(しなくても良いけど、いらないので)
    • [プロジェクト] - [ユーザーコントロールの追加]
    • ユーザーコントロール MyControl.csを追加
    • Windowsフォームアプリケーションと同様にコントロールを作成する
    • ビルドすると bin/Release/***.dll が出来る
    Tips:デバッグするには新しいWindowsフォームアプリケーションプロジェクトを追加する必要があります

    ボタンを押すたびに label1.text が1ずつインクリメントするというサンプルを作ってみました。(再利用性ゼロだな…)
    あらかじめ、デザイナで label1 という名前の Lablel を作っておきます。

    MyControl.cs
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace ClassLibrary1
    {
        
    public partial class MyControl : UserControl    
    {
        private int i = 1;
        public MyControl()        
        {
            InitializeComponent();
            button1_Click(this, new EventArgs());
        }
            
        private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = i.ToString();
            i++;
        }
    }
    }