Пользовательский элемент управления PictureBox - PullRequest
0 голосов
/ 11 июня 2011

Может кто-нибудь показать мне пример того, как создать пользовательский элемент управления на основе Picturebox?

Я просто хочу это: если щелкнуть Picturebox (OnKeyDown) изображение должно быть перемещено на 3пикселей вниз и 3 пикселя вправо.После этого на мероприятии OnKeyUp я хочу восстановить исходное изображение.

Может кто-нибудь сказать мне, как это сделать?

Ответы [ 2 ]

2 голосов
/ 11 июня 2011

"Gets clicked" равно OnMouseX, а не OnKeyX.

public partial class UserControl1 : PictureBox 
{
    public UserControl1()
    {
        InitializeComponent();
    }

    private bool shifted = false;

    protected override void OnMouseDown(MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left && this.Image != null)
        {
            this.shifted = true;
            this.Invalidate();
        }

        base.OnMouseDown(e);
    }

    protected override void OnMouseUp(MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left && this.Image != null)
        {
            this.shifted = false;
            this.Invalidate();
        }

        base.OnMouseUp(e);
    }

    protected override void OnPaint(PaintEventArgs pe)
    {
        if (this.shifted)
        {
            pe.Graphics.TranslateTransform(3, 3, System.Drawing.Drawing2D.MatrixOrder.Append);
        }

        base.OnPaint(pe);
    }
}
0 голосов
/ 30 сентября 2015

Я знаю, что это старый пост, но я нашел его и был очень полезен. Но я потратил около одного рабочего дня, чтобы решить проблему, связанную с тем, что мой DrawRectangle был нарисован под изображением, которое я загрузил. Решением было переместить метод base.OnPaint(pe); в начало метода OnPaint.

Надеюсь, это поможет.

Адам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...