我在VB.NET中创建一个应用程序,允许用户突出显示文档图像中的某些文本,以便保存高光以供将来参考,但原始图像不会被修改。我想我可以通过从图像文件创建图形并允许用户绘制该图形来实现它。问题是 - 无法从索引的图像文件创建图形,我的许多人都是。我想知道:是否有可能在PictureBox控件中的图像上方创建一个透明的图形表面,以便用户可以在该表面上绘制,但它看起来好像是直接在图像上绘制?
谢谢!
答案 0 :(得分:2)
(以下假设WinForms)
其实你可以。
要显示图片,请使用.BackgroundImage
的{{1}}属性,而不是PictureBox
。
不要忘记为.Image
设置正确的值以禁用默认平铺并使其与.BackgroundImageLayout
属性保持同步,以便正确对齐叠加图像。
设置图片后,创建叠加图片(假设您的.SizeMode
为PictureBox
:
PictureBox1
现在您可以在叠加图像上绘图。 或者,您可以复制图像(例如,将其绘制到叠加层)。
答案 1 :(得分:0)
实际上,SLaks可能是正确的,您无法覆盖透明控件并使其按预期工作。
我认为你可以避免这种情况,但是...而是自己控制。跟踪您的高光和注释,作为第二个位图或原始高亮/注释数据(更适合您的目的)。在Paint上,您将绘制原始图像,然后您将绘制位图(或绘制它的每个组件)到控件的图形表面上。
您可以进行一些调整,使其在GDI +框架内以及您自己的代码中更具响应性。
答案 2 :(得分:0)
没有
您需要在图像副本上绘制并设置PictureBox以显示修改后的副本。