簡體   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