Устанавливать координаты x и y в Draw изображении динамически - PullRequest
0 голосов
/ 26 марта 2012

Я изменяю размер изображения с помощью DrawImage.

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

Здесь исходное изображение начинается с координат 0.
Предположим, мне нужно динамически рассчитать координаты x и y, как мне это сделать?
По умолчанию изображение должно начинаться с местоположения 20 (т. Е. X) и 20 (т. Е. Y).
Если я изменяю размер формы, она должна пропорционально рассчитываться в соответствии с изображением с измененным размером, это означает, что если для значения по умолчанию это 20, то для размера изменить размер формы?

Спасибо

Ответы [ 2 ]

0 голосов
/ 26 марта 2012

Из вашего вопроса не понятно, как размер формы соотносится с желаемыми координатами.

Форма имеет свойство 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(); самостоятельно
0 голосов
/ 26 марта 2012

Вы можете зарегистрироваться в событии 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
    }
...