□投稿者/ B (1回)-(2008/11/08(Sat) 22:08:51)
|
分類:[C#]
はじめまして。C#を勉強しはじめて一ヶ月の初心者です。
Microsoft Visual C# 2008 Express Edition を使用しております。
Formにpicturebox1とbutton1を配置し、ボタンを押すたびに前の画像をずらすことによって
黄色の領域がinterbalずつ広がっていくものを書きたいのですが、うまくいきません。
座標変換の部分を消せば思うとおりに動いているのですが。。
どなたかご教授お願いいたします。
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 WindowsFormsApplication1
{
public partial class Form1 : Form
{
Bitmap bmp;
const int interbal = 30;
const int xMax = 240;
const int xMin = 0;
int yMax = 100;
int yMin = 0;
float x;
float y;
public Form1()
{
InitializeComponent();
bmp_init();
}
//ビットマップ初期化
private void bmp_init()
{
//pictureBoxと同じサイズのbitmap生成
bmp = new Bitmap(pictureBox1.Size.Width, pictureBox1.Size.Height);
//ピクチャボックスに合わせるための値
x = (float)pictureBox1.Size.Width / (xMax - xMin);
y = (float)pictureBox1.Size.Height / (yMin - yMax);
}
//ビットマップに書く
private void writebitmap()
{
using (Graphics g = Graphics.FromImage(bmp))
{
//座標変換
g.ScaleTransform(x, y, System.Drawing.Drawing2D.MatrixOrder.Append);
g.TranslateTransform(xMin, -yMax);
Bitmap img = new Bitmap(bmp);
g.DrawImage(img, -interbal, 0);
g.FillRectangle(Brushes.Yellow, xMax-interbal, 0, interbal, yMax);
}
pictureBox1.Invalidate();
}
private void button1_Click(object sender, EventArgs e)
{
writebitmap();
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
if (bmp != null)
{
e.Graphics.DrawImage(bmp, 0, 0, pictureBox1.Size.Width, pictureBox1.Size.Height);
}
}
}
}
|
|