0

DrawImage を使用して画像のサイズを変更しています。

Graphics.DrawImage(SourceImage,0,0,200,200);

ここで、ソース画像は座標 0 から始まります
。x 座標と y 座標を動的に計算する必要があるとします。どうすればよいでしょうか?
デフォルトでは、画像は位置 20 (つまり x) と 20 (つまり y) から開始する必要があります。
フォームのサイズを変更すると、サイズ変更された画像に応じて比例して計算する必要があります。つまり、デフォルトの場合、フォームのサイズ変更よりも20の場合はどれくらいですか?

ありがとう

4

2 に答える 2

0

フォームの ResizeEnd イベントに登録し、画像を再描画することができます。何かのようなもの;

    public Form1()
    {
        InitializeComponent();

        this.ResizeEnd += new EventHandler(Form1_ResizeEnd);

    }

    void Form1_ResizeEnd(object sender, EventArgs e)
    {
        //draw the image again using the related calculation
    }
于 2012-03-26T13:56:49.413 に答える
0

あなたの質問から、フォームのサイズが目的の座標にどのように関連するかは明確ではありません。

フォームにはClientRectangle、座標の計算に使用できるプロパティがあります。たとえば、画像を右下隅に表示する場合は、次のようにします。

protected override void OnPaint(PaintEventArgs e)
{
    int x = this.ClientRectangle.Width - 200;
    int y = this.ClientRectangle.Height - 200;
    e.Graphics.DrawImage(SourceImage, x, y, 200, 200);
}

DrawImageコードがPaintイベント ハンドラーにあると仮定すると、次のいずれかが可能です。

  • SetStyle(ControlStyles.ResizeRedraw, true);フォームコンストラクターで使用するためPaint、フォームのサイズが変更されたときに呼び出されます
  • イベントのイベント ハンドラーを追加し、自分自身Resizeを呼び出すInvalidate();
于 2012-03-26T13:59:22.270 に答える