Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net DrawToBitmap:临时缩放控件_Vb.net_Winforms_Controls_Drawtobitmap - Fatal编程技术网

Vb.net DrawToBitmap:临时缩放控件

Vb.net DrawToBitmap:临时缩放控件,vb.net,winforms,controls,drawtobitmap,Vb.net,Winforms,Controls,Drawtobitmap,我正在使用DrawToBitmap生成WinForms控件的snapshop,并为用户提供了以不同大小生成此图像的选项。我调整控件大小的代码是 Private Function GetChartScaledImage(NewSize As Size) As Bitmap Dim bmp As New Bitmap(NewSize.Width, NewSize.Height) 'Create output bitmap With workingChart Dim o

我正在使用DrawToBitmap生成WinForms控件的snapshop,并为用户提供了以不同大小生成此图像的选项。我调整控件大小的代码是

Private Function GetChartScaledImage(NewSize As Size) As Bitmap
    Dim bmp As New Bitmap(NewSize.Width, NewSize.Height) 'Create output bitmap
    With workingChart
        Dim oldsize As Size = .Size 'Save chart's old size
        Dim lastdock As DockStyle = .Dock 'Save chart's old docking style
        .SuspendLayout()
        .Dock = DockStyle.None 'Disable dock to allow resize
        .Size = NewSize 'Set the temporary size
        .DrawToBitmap(bmp, New Rectangle(0, 0, NewSize.Width, NewSize.Height)) 'Draw the image
        .Dock = lastdock 'Recreate the old behaviour
        .Size = oldsize 'Recreate the old size
        .ResumeLayout()
    End With
    Return bmp
End Function
这在很大程度上可以正常工作,但存在一个问题,即控件的大小可以被其父容器覆盖。我使用的TableLayoutPanels可以防止控件被正确缩放

我还没有遇到但可能发生的另一个问题是,可以通过临时重置.Dock属性来改变窗体的停靠顺序

是否有其他方法可以缩放一个绘制事件的控件


之后我可以缩放位图,但这会使图像模糊。创建具有相同属性的临时新控件也是不可取的,因为该控件相当复杂。

我怀疑您能否找到通用解决方案。如果保留另一个图表控件,您将取得更大的进步,该控件提供的数据和属性与UI上的相同,但在其他方面不可见。还允许通过调整现有控件的大小来执行无法执行的操作,例如使位图足够大,以便打印在纸上时看起来很好。谢谢您的评论。不幸的是,我并不是只有一个图表,因此总是使用两个图表对我来说并不是一个真正的选择。我希望有一些隐藏的技巧来完成它。我想我还有另一个理由支持放弃这个被抛弃的控制权,即使这不是它的错;-我自己画。