画像の回転に問題があります。回転しようとしている画像のサイズは約 300kB です。角度を 0 度から 360 度に 1 度ずつ上げながら回転させると、メモリ不足の例外が発生します。100度まで動いています。
これが私のコードです:
private void button1_Click(object sender, EventArgs e)
{
this.openFileDialog1.InitialDirectory = System.Environment.SpecialFolder.MyComputer .ToString ();
DialogResult result = this.openFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
String pathfile = this.openFileDialog1.FileName ;
meter = Image.FromFile(pathfile);
pictureBox1.Image = meter;
bitmapmeter = new Bitmap(meter);
gmeter = Graphics.FromImage(bitmapmeter);
w = bitmapmeter.Width;
h = bitmapmeter.Height;
}
}
private void button2_Click(object sender, EventArgs e)
{
for (int angle = 0; angle < 360; angle = angle + 1)
{
bitmapmeter = new Bitmap(meter); //create a bitmap for selected image//pictureBox2.Image = bitmapmeter;
gmeter = Graphics.FromImage(bitmapmeter);
rotate(angle);
bitmapmeter.Dispose();
gmeter.Dispose();
}
MessageBox.Show("Finished");
}
Bitmap newBitmap;
Graphics graphics;
private void rotate(int angle)
{
newBitmap = new Bitmap(w, h);
graphics = Graphics.FromImage(newBitmap);
graphics.TranslateTransform((float)bitmapmeter.Width / 2, (float)bitmapmeter.Height / 2);
graphics.RotateTransform(1);
graphics.TranslateTransform(-(float)bitmapmeter.Width / 2, -(float)bitmapmeter.Height / 2);
graphics.DrawImage(bitmapmeter, new Point(0, 0));
newBitmap.Dispose();
graphics.Dispose();
//pictureBox2.Image = bitmapmeter;
}