Создание окна просмотра изображений - PullRequest
0 голосов
/ 16 апреля 2010

Я изучаю GDI + и пытаюсь создать окно отображения с полосами прокрутки (чтобы я мог видеть только часть изображения за раз, и я могу прокручивать его). Я прочитал основы GDI + из нескольких книг, но я не нашел в Интернете или в доступных мне книгах хороших учебных пособий о более сложных вещах, подобных этой.

Какие-либо рекомендации по руководствам или примеры кода о том, как это сделать?

Вот что у меня есть

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    if (Label != null)
    {
        using (Bitmap drawnLabel = new Bitmap(Label.LabelHeight, Label.LableLength, System.Drawing.Imaging.PixelFormat.Format1bppIndexed))
        using (Graphics drawBuffer = Graphics.FromImage(drawnLabel))
        {
            drawBuffer.ScaleTransform(_ImageScaleFactor, _ImageScaleFactor);
            foreach (Epl2.IDrawableCommand cmd in Label.Collection)
            {
                cmd.Paint(drawBuffer);
            }
            drawBuffer.ResetTransform();
        }
    }
}

Я хотел бы нарисовать это в PictureBox, который у меня есть на контроле и контроле, что показано VScrollBar и HScrollBar но я не знаю, как сделать этот шаг.

P.S. Этикетка - это пользовательский класс, который я имею в своем пространстве имен, это объект, представляющий этикетку, которую вы печатаете с принтера этикеток.

1 Ответ

2 голосов
/ 16 апреля 2010

Что вам нужно сделать, это:

  • Размещение элемента управления Panel в форме (или в UserControl для повторного использования)
  • Установите для свойства автопрокрутки панели значение True
  • Сделать элемент управления PictureBox дочерним элементом Panel
  • Измените размер элемента управления PictureBox до размера изображения, которое он содержит во время выполнения

Элемент управления Panel будет отображать вертикальные и горизонтальные полосы прокрутки по мере необходимости, предоставляя вам именно ту функциональность, которую вы ищете.

Чтобы выполнить собственное увеличение, вы можете отказаться от элемента управления PictureBox. Выполните описанные выше шаги, но вместо PictureBox разместите другую панель внутри родительской панели, измените ее размер по своему усмотрению и обработайте событие Paint для увеличения.

...