下記のようにしたのですが
Bitmap pic1 = new Bitmap("c:\\背景.bmp");
を
Bitmap pic2 = new Bitmap("c:\\キャラクター.png");
と同じ所に移動すると実行した時にエラーになります。
どのようにしたらいいですか。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
// 透明色が指定されたキャラクター画像と、背景画像とを合成するサンプルプログラム
namespace ComposePNGImage
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private float ang = 0;
private float height = 0;
Bitmap pic2 = new Bitmap("c:\\キャラクター.png");
//============
// 初期化処理
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;
button1.Text = "角度";
button2.Text = "上下";
}
//============
// 背景画像の上にキャラクター画像が合成された画像を表示
private void button1_Click_1(object sender, EventArgs e)
{
ang++;
Bitmap pic1 = new Bitmap("c:\\背景.bmp");
Bitmap resultPic = new Bitmap(AttitudeBitmap(pic1, ang, 100, 382, 0, (int)height));//背景.jpgの中心座標を指定
Graphics g = Graphics.FromImage(resultPic);
g.DrawImage(pic2, 26, 306, pic2.Width, pic2.Height);
g.Dispose();
pic1.Dispose();
//pic2.Dispose();
pictureBox1.Image = resultPic;
}
/// <summary>
/// ビットマップ(Bitmap)を回転する
/// </summary>
/// <param name="bmp">ビットマップ</param>
/// <param name="angle">回転角度</param>
/// <param name="x">中心点X</param>
/// <param name="y">中心点Y</param>
/// <returns></returns>
public Bitmap AttitudeBitmap(Bitmap bmp, float angle, int x, int y, int s_x, int s_y)
{
Bitmap bmp2 = new Bitmap((int)bmp.Width, (int)bmp.Height);
Graphics g = Graphics.FromImage(bmp2);
g.Clear(Color.Black);
g.TranslateTransform(-x, -y);
g.RotateTransform(angle, System.Drawing.Drawing2D.MatrixOrder.Append);
g.TranslateTransform(x, y, System.Drawing.Drawing2D.MatrixOrder.Append);
g.TranslateTransform(s_x, s_y);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear;
Rectangle targetRect = new Rectangle(0, 0, bmp.Width, bmp.Height);//ピクセル等倍で描画するための四角形領域作成
//g.DrawImageUnscaled(bmp, 0, 0);
g.DrawImage(bmp, targetRect, targetRect, GraphicsUnit.Pixel);//元の画像サイズと同じサイズの四角形領域に合わせて描画する
g.Dispose();
return bmp2;
}
private void button2_Click(object sender, EventArgs e)
{
height++ ;
if (height == 300) { height = -300; }
Bitmap pic1 = new Bitmap("c:\\背景.bmp");
Bitmap pic2 = new Bitmap("c:\\キャラクター.png");
Bitmap resultPic = new Bitmap(AttitudeBitmap(pic1, ang, (int)pic1.Width / 2, (int)pic1.Height / 2, 0, (int)height));//背景.jpgの中心座標を指定
Graphics g = Graphics.FromImage(resultPic);
g.DrawImage(pic2, 26, 306, pic2.Width, pic2.Height);
g.Dispose();
pic1.Dispose();
//pic2.Dispose();
pictureBox1.Image = resultPic;
}
}
}