一意のRGBカラーを使用して24ビットのビットマップ(解像度100x100ピクセル)を作成し、生成されたイメージをディスクに保存する必要があります。現在、 SetPixel
関数を使用していますが、非常に遅いです。
Bitmap Bmp = new Bitmap(width, height);
//...
//...
Bmp.SetPixel(x,y,Color.FromARGB(redvalue, greenvalue, bluevalue));
SetPixel
より速い方法はありますか?前もって感謝します。
これはあなたがそれを必要とすることをするはずです。指定した色でビットマップ全体を塗りつぶします。
Bitmap Bmp = new Bitmap(width, height);
using (Graphics gfx = Graphics.FromImage(Bmp))
using (SolidBrush brush = new SolidBrush(Color.FromArgb(redvalue, greenvalue, bluevalue)))
{
gfx.FillRectangle(brush, 0, 0, width, height);
}
Bitmap bmp = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.Green);
何を達成しようとしているかによって異なりますが、通常はグラフィックスオブジェクトを取得して描画することでGDI +を使用します。
Graphics g = Graphics.FromImage(bitmap);
実際には大きなテーマです。初心者向けのチュートリアルをいくつか紹介します。 GDI +チュートリアル
以下は、グラデーションで塗りつぶした長方形を描くチュートリアルのスニペットです。
Rectangle rect = new Rectangle(50, 30, 100, 100);
LinearGradientBrush lBrush = new LinearGradientBrush(rect, Color.Red, Color.Yellow, LinearGradientMode.BackwardDiagonal);
g.FillRectangle(lBrush, rect);
LockBits を使用して、ピクセルの書き込みを高速化できます(ピクセルごとのメソッド呼び出しの代わりにポインターアクセス)。
常にregions(rectangle)を使用すると、個々のピクセルを使用するよりもはるかに高速です。
サイズs(高さ、幅)および色のビットマップオブジェクトbmpの作成c。
bmp=CreateBmp( c , s );
ビットマップを返すCreateBmpメソッド:
Bitmap CreateBmp(Color c, Size s)
{
Bitmap temp =new Bitmap(1,1);
temp.SetPixel(1,1,c);
return new Bitmap(temp, s);
}
Gd Libraryをチェックすることをお勧めします。
私はむしろC#ライブラリがあると確信しています。 http://www.boutell.com/Gd/