このプログラムを書いていたときに、今までの流れから、まずは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を使った方法がよさそうです。
今回はこれで終わりです。



