0

我正在学习 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我在控件上的 a 中并控制 a 显示的内容VScrollBarHScrollBar但我不知道如何执行该步骤。

PS Label 是我的命名空间中的一个自定义类,它是一个代表您将从标签打印机打印的标签的对象。

4

1 回答 1

2

你需要做的是:

  • 在窗体上托管面板控件(或在用户控件中以供重用)
  • 将 Panel AutoScroll 属性设置为 True
  • 使 PictureBox 控件成为 Panel 的子控件
  • 在运行时将 PictureBox 控件调整为其包含的图像的大小

Panel 控件将根据需要显示垂直和水平滚动条,为您提供所需的功能。

要进行自己的缩放,您实际上可能会放弃 PictureBox 控件。遵循上述步骤,但不是 PictureBox,而是在父面板中托管另一个面板,根据需要调整大小并处理其 Paint 事件以进行缩放。

于 2010-04-16T18:46:49.580 回答