杯具的 Graphics.PageScale

GDI+ Graphics 提供了一个 PageScale 属性, 用来设置Graphics 单位对页面单位的转换比率. 理论上可以用来做有缩放(Zoom )功能的绘图, 我一开始也是这么想的, 后来发现虽然绘图单位放大了, 可是对字体大小无视, 也就是说字体大小没有作用. 不过这也不是很严重的问题, DrawString 的时候重新按比例构造一个Font 就可以了. 要命的问题是---------

 

PageScale 不支持双缓冲(Double-Buffer )!!

 

其实是不支持指向内存位图(Bitmap)的Graphics. 不论是自己构造一个Bitmap 做双缓冲, 还是直接把Control.SetStyle(ControlStyles.OptimizedDoubleBuffer, true) , 此时的 PageScale 都不发挥任何作用.

 

找来找去, 有些洋人也提出了这个问题, 后来发觉, 弄来弄去, 做Zoom, 还是矩阵转换来得实在. 对于提到矩阵就头大的我来说, .net GDI+ 提供了一个简单的方法 ScaleTransform 实现了这个功能. 当然, 如果需要更高级的矩阵转换, 可以用 MultiplyTransform 方法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值