【问题标题】:Creating a image viewer window controll创建图像查看器窗口控件
【发布时间】:2010-04-16 18:38:18
【问题描述】:

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

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

【问题讨论】:

    标签: c# winforms gdi+ picturebox


    【解决方案1】:

    你需要做的是:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-03
      • 2020-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多