C#でプログラムを作成していると、画像を生成したり編集したりする必要が出てくることがあります。例えば、グラフやチャートの作成、写真の加工、動的なバナー生成などです。C#では、System.Drawing名前空間にあるBitmapクラスを使用することで、簡単に画像操作を行うことができます。この記事では、Bitmapクラスを使った基本的な画像生成の方法を解説します。
目次
Bitmapクラスとは
Bitmapクラスは、ピクセルデータとして保存される画像を表します。このクラスを使用することで、新しい画像の作成、既存画像の編集、画像の保存などが可能になります。
基本的な画像生成
まずは、シンプルな画像を生成し、保存する方法を見てみましょう。
using System;
using System.Drawing;
class BitmapExample
{
static void Main()
{
// 300x200ピクセルの新しいBitmapを作成
using (Bitmap bmp = new Bitmap(300, 200))
{
// Graphicsオブジェクトを取得
using (Graphics g = Graphics.FromImage(bmp))
{
// 背景を白で塗りつぶす
g.Clear(Color.White);
// 青い四角形を描画
using (SolidBrush blueBrush = new SolidBrush(Color.Blue))
{
g.FillRectangle(blueBrush, new Rectangle(50, 50, 200, 100));
}
// 赤い文字を描画
using (Font font = new Font("Arial", 24))
using (SolidBrush redBrush = new SolidBrush(Color.Red))
{
g.DrawString("Hello, Bitmap!", font, redBrush, new PointF(60, 80));
}
}
// 画像をファイルに保存
bmp.Save("example.png", System.Drawing.Imaging.ImageFormat.Png);
Console.WriteLine("画像が保存されました: example.png");
}
}
}
このコードでは、以下の手順で画像を生成しています:
- 300×200ピクセルのBitmapオブジェクトを作成します。
- Bitmapから
Graphics
オブジェクトを取得します。これを使って描画操作を行います。 Clear
メソッドで背景を白で塗りつぶします。FillRectangle
メソッドで青い四角形を描画します。DrawString
メソッドで赤い文字を描画します。- 最後に、
Save
メソッドで画像をPNG形式で保存します。
画像の編集
既存の画像を読み込んで編集することもできます。以下は、画像に円を描画する例です:
using System;
using System.Drawing;
class BitmapEditExample
{
static void Main()
{
// 既存の画像を読み込む
using (Bitmap bmp = new Bitmap("input.jpg"))
{
using (Graphics g = Graphics.FromImage(bmp))
{
// 赤い円を描画
using (Pen redPen = new Pen(Color.Red, 5))
{
g.DrawEllipse(redPen, new Rectangle(50, 50, 100, 100));
}
}
// 編集した画像を保存
bmp.Save("output.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
Console.WriteLine("編集された画像が保存されました: output.jpg");
}
}
}
このコードでは、既存の画像に赤い円を追加しています。
ピクセル単位の操作
Bitmapクラスでは、個々のピクセルを直接操作することも可能です。以下は、グラデーション効果を作成する例です:
using System;
using System.Drawing;
class PixelManipulationExample
{
static void Main()
{
int width = 256;
int height = 256;
using (Bitmap bmp = new Bitmap(width, height))
{
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
// RGBの値を計算
int r = x;
int g = y;
int b = 128;
// ピクセルの色を設定
bmp.SetPixel(x, y, Color.FromArgb(r, g, b));
}
}
bmp.Save("gradient.png", System.Drawing.Imaging.ImageFormat.Png);
Console.WriteLine("グラデーション画像が保存されました: gradient.png");
}
}
}
このコードでは、x座標に応じて赤の強さを、y座標に応じて緑の強さを変化させてグラデーションを作成しています。
まとめ
C#のBitmapクラスを使用することで、簡単に画像を生成・編集することができます。基本的な図形の描画から、テキストの追加、既存画像の編集、ピクセル単位の操作まで、幅広い画像処理が可能です。
この記事で紹介した基本を応用することで、より複雑な画像処理やグラフィックスプログラミングに挑戦することができるでしょう。初心者の方は、まずは簡単な図形の描画から始めて、徐々に複雑な操作にチャレンジしてみてください。
コメント