C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 50 を表示中)
■27522 / )  座標変換と画像の移動
□投稿者/ 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);
            }
        }
    }
}

返信 編集キー/


管理者用

- Child Tree -