[就这么点分了]关于winform控件覆盖后部分控件重绘或者WPF可用的图片显示技术问题

cheersfortwd 2020-12-02 09:24:52
大佬们好
小弟工作用Winform写了一个控件,继承自panel,在他的onpaint方法中重绘显示图片,图片大小会很长(线扫相机),到15K*40K的样子,然后我需要在图片上做绘图(调整大小,平移等,均实现)
问题:每次调整上层绘图都需要重绘整个panel,当显示图片较大时,显示很慢很慢,这导致调整也很卡
然后想着跟WPF一样,上面覆盖一层别的控件,设置为透明,然后我就裂开了
不管通过通过任何方式重绘上层覆盖的控件,整个区域都会刷新,然后底层的图片层依旧会重绘
想了下,尝试了
1 挂起下层控件特定时候聪慧:调用control.SuspendLayout();无用
2 拦截消息SendMessage(pbxImage.Handle, WM_SETREDRAW, 0, IntPtr.Zero);无用

想问问各路大姥姥们,有没有什么想法可以探索

之所以非要使用winform,是因为图像要显示为位图,即放大后要能看到清晰度灰度,WPF没找打有什么方法可以实现这种绘制













可用50分全部奉上;(虽然大佬也不在乎
...全文
3374 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
八爻老骥 2020-12-02
  • 打赏
  • 举报
回复
引用 2 楼 cheersfortwd的回复:
[quote=引用 1 楼 icoolno1 的回复:]Winform和WPF在绘图方面的差别在于前者用GDI+,后者用的DX。D2D显示BMP没问题的吧,WPF里不是有Canvas控件和Image控件。 Winform里用控件遮挡不能用透明,透明就全透明了,没什么用,而是自定义Region属性,把非遮挡部分用相关几何操作方法扣掉。
您好,WPF中canvas和image在绘图之后如果放大,像素和像素只检都是模糊过度的,而我这边需要实现单个像素分明,类似于windows自带的图片查看器,或者其实我如果能写出来win7自带的那个也可以,显示速度和缩放拖动都可以[捂脸],写不出来 而是自定义Region属性,把非遮挡部分用相关几何操作方法扣掉这个意思是我自己创建一个region,将我需要重回的区域放进去,比如我从会矩形只重绘一个矩形的外框,而不是整个矩形,是这个意思吗 感谢回复[/quote] 是的,覆盖控件就画个外框。
cheersfortwd 2020-12-02
  • 打赏
  • 举报
回复
引用 1 楼 icoolno1 的回复:
Winform和WPF在绘图方面的差别在于前者用GDI+,后者用的DX。D2D显示BMP没问题的吧,WPF里不是有Canvas控件和Image控件。 Winform里用控件遮挡不能用透明,透明就全透明了,没什么用,而是自定义Region属性,把非遮挡部分用相关几何操作方法扣掉。
您好,WPF中canvas和image在绘图之后如果放大,像素和像素只检都是模糊过度的,而我这边需要实现单个像素分明,类似于windows自带的图片查看器,或者其实我如果能写出来win7自带的那个也可以,显示速度和缩放拖动都可以[捂脸],写不出来 而是自定义Region属性,把非遮挡部分用相关几何操作方法扣掉这个意思是我自己创建一个region,将我需要重回的区域放进去,比如我从会矩形只重绘一个矩形的外框,而不是整个矩形,是这个意思吗 感谢回复
八爻老骥 2020-12-02
  • 打赏
  • 举报
回复
Winform和WPF在绘图方面的差别在于前者用GDI+,后者用的DX。D2D显示BMP没问题的吧,WPF里不是有Canvas控件和Image控件。

Winform里用控件遮挡不能用透明,透明就全透明了,没什么用,而是自定义Region属性,把非遮挡部分用相关几何操作方法扣掉。
八爻老骥 2020-12-02
  • 打赏
  • 举报
回复
比如画一个中空的窗体:

8,833

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 组件/控件开发
社区管理员
  • 组件/控件开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧