双缓冲画图的问题
我在内存DC上画图再贴到屏幕DC上。当我的内存DC的坐标系和屏幕DC的坐标系一样时,没有问题。可是当我把内存DC的坐标系设成笛卡尔坐标系(原点在屏幕中心),屏幕DC的原点...
我在内存DC上画图再贴到屏幕DC上。
当我的内存DC的坐标系和屏幕DC的坐标系一样时,没有问题。
可是当我把内存DC的坐标系设成笛卡尔坐标系(原点在屏幕中心),屏幕DC的原点还在左上角时,再把图贴过去。
怎么感觉是,只把内存DC上的那副图的一部分贴了过去然后再放大之后铺满整个客户区窗口呢?
我想可能是BitBlt这个函数我没弄明白。但是不知道该怎么办
我用的MM_ISOTROPIC模式, 展开
当我的内存DC的坐标系和屏幕DC的坐标系一样时,没有问题。
可是当我把内存DC的坐标系设成笛卡尔坐标系(原点在屏幕中心),屏幕DC的原点还在左上角时,再把图贴过去。
怎么感觉是,只把内存DC上的那副图的一部分贴了过去然后再放大之后铺满整个客户区窗口呢?
我想可能是BitBlt这个函数我没弄明白。但是不知道该怎么办
我用的MM_ISOTROPIC模式, 展开
1个回答
展开全部
你是不是用SetMapMode修改了GDI映射模式。
BITBLT只是位块传送,不执行拉伸,但是如果修改了GDI映射模式,在GDI32.DLL内部就要执行坐标映射转换,一样可以看到拉伸效果。
不建议用非 MM_TEXT 模式,平常玩玩可以,在正式的场合(商用软件)执行效率不见得能提高,且输出效果也很差。即使对于输出效果要求严格的地方,也不见得满意,GDI假定点距是 0.254,而实际上显示器规格不同,点距还是有点差别。
要实现输出,还不如自己即使dpi,自己用映射变换,完了在输出到内存DC。
BITBLT只是位块传送,不执行拉伸,但是如果修改了GDI映射模式,在GDI32.DLL内部就要执行坐标映射转换,一样可以看到拉伸效果。
不建议用非 MM_TEXT 模式,平常玩玩可以,在正式的场合(商用软件)执行效率不见得能提高,且输出效果也很差。即使对于输出效果要求严格的地方,也不见得满意,GDI假定点距是 0.254,而实际上显示器规格不同,点距还是有点差别。
要实现输出,还不如自己即使dpi,自己用映射变换,完了在输出到内存DC。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询