繁体   English   中英

在MFC中实现缩放控件

[英]Implementing zoom controls in MFC

我正在使用“打印预览”功能来显示幻灯片的概述,幻灯片上带有矩形的样品点。

载玻片的尺寸通常为25 x 75毫米,斑点样品的直径通常为0.1毫米。 幻灯片周围通常有2mm的间隙,没有任何斑点被打印。

点(间距)之间的距离精确到0.01mm。 例如,需要在像素中区分0.20和0.29 mm的间距。 代表斑点本身,只要斑点可见且不重叠,在此阶段100%的准确性可能并不重要。

我会建议您使用什么技术来创建幻灯片/点的位图表示并使用任意级别的放大倍率查看幻灯片布局。

这不必太复杂-1:1表示加上开始时越来越小的放大倍数。 由于斑点太小而无法显示,因此我可能无法放大太多。

对于较大的放大倍率,我可能还需要了解实现水平/垂直滚动控件的方法,但是稍后我会解决。

我想了解我应该了解的任何编程和缩放技术,以便正确实现缩放功能。 我最近一直在使用StretchBlt函数来更改图像大小,这似乎还可以,但是任何其他相关信息也将很有用。

干杯。

让我们从头开始:

  • 为什么不使用:: AFXPrintPreview()和MFC的其余打印预览功能?

  • 我认为“幻灯片”和“地点”特定于您的行业-它们是否与问题相关,还是仅用于说明?

  • StretchBlt()不会给您带来太大的好处,因为它只会让您进行像素级的“缩放”,您需要以更高的精度绘制控件的特定部分。 即使您不打算使用MFC打印预览的东西,也请看看它以了解如何完成。

  • Windows控件具有滚动和缩放所需的所有功能。 它们位于设备上下文中:SetWindowExt(),SetViewportExt(),SetViewportOrg()等。在MSDN的“ CDC成员”页面的“坐标函数”下查找。 话虽这么说,我曾经通过跟踪滚动条的位置,缩放控件的命令等方式来“手动”实现缩放和滚动。这让我很痛苦,回想起来,我应该使用Windows工具。 但是,它们也不容易使用,这就是为什么我认为自己可以做得更好的原因-事实证明我错了:)

  • 最后,尽管从您的问题中我无法确定您是否真的在那条船上,但不要以物理距离(毫米等)为依据。 您想要做的第一件事就是将形状绘制到屏幕上,并在元素之间使用正确的比例。 然后您要放大/缩小。 最后,只有到印刷部分时,物理措施才起作用。 您唯一需要弄清楚的地方(此处略有简化)是“什么是我要获得所需输出所需的正确缩放比例”。 这有点棘手,但与问题的第一部分(如何将组件绘制到屏幕上)几乎没有关系。

如果您遇到麻烦,请随时发布更具体的问题。 我在这里有打印预览和打印代码,作为打印过程中“通用”部分的示例,尽管每个应用程序的细节明显不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM