このプログラムを書いていたときに、今までの流れから、まずはGraphicsオブジェクトを生成するということでGraphicsオブジェクト生成のコードを入れてあったのですが、GraphicsクラスにはSetPixelメソッドがありません。逆にGraphicsオブジェクトを使って点を打とうとすると、「C#でWindows Formのウインドウに点を描画する」のエントリーで書いたような、回りくどい書き方になりそうです。
SetPixelはBitmapオブジェクトに直接するもののようで、Graphicsオブジェクトのメソッドを使う必要がないのであれば、Graphicsオブジェクトを生成する必要はありませんね。
dobon.net様のこのページの「SetPixelメソッドで点を描く」という項に同じお話が出て来ます。
以下のリストは、最初にGraphicsオブジェクトの生成とDisposeするコードをコメントで残してありますが、不要です。
なお、いつもと同じようにMainメソッドは割愛しています。
/* * bitmapに点を打つ試み * setPixelを使って、pictureBoxに画を描いてみたつもり。 * Graphicsオブジェクトのメソッドは使わないので、Graphicsオブジェクトは生成しないで * SetPixel()する */ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace sample31 { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.MaximumSize = this.Size; this.MinimumSize = this.Size; Bitmap img = new Bitmap(600, 720); //Graphics g = Graphics.FromImage(img); for( int x = 0; x <; 600; x+=2) { for (int y = 0; y <; 720; y+=2 ) { img.SetPixel(x, y, Color.Red); } } //g.Dispose(); pictureBox1.Image = img; } } }
このプログラムを実行すると、下記のような結果となります。
描画方法は、どんな図形をどのような形で描くかによって、適切な方法が違ってくるのかもしれません。しかし、ピクセルベースで何かを描いていく今回の目標仕様に対しては、このPictureBoxのImageプロパティとBitmapオブジェクト、そしてSetPixelを使った方法がよさそうです。
今回はこれで終わりです。
0 件のコメント:
コメントを投稿
コメントを頂ければ幸いです。