C# 如何使用pictureBox作为文本框?

C# 如何使用pictureBox作为文本框?,c#,winforms,C#,Winforms,我已经用透明文本框尝试了一段时间,但它似乎完全被窃听了,所以我不得不在这里问它。如何使用此pictureBox在其上写入文本(使用pictureBox作为文本框): 非常感谢您给我的任何回答。winforms实现透明度的整个方法都是一种黑客行为,您试图做的事情实际上是不可能的 它通过获取其下方图层的背景色并将其设置为自己的颜色来实现这一点。您可以在自己的图像中看到这一点,因为图片框的背景色是默认的控件颜色,这反过来意味着标签颜色是这种颜色 在您显示的图像中,图像似乎是纯色,因此可以选择将文本的

我已经用透明文本框尝试了一段时间,但它似乎完全被窃听了,所以我不得不在这里问它。如何使用此pictureBox在其上写入文本(使用pictureBox作为文本框):


非常感谢您给我的任何回答。

winforms实现透明度的整个方法都是一种黑客行为,您试图做的事情实际上是不可能的

它通过获取其下方图层的背景色并将其设置为自己的颜色来实现这一点。您可以在自己的图像中看到这一点,因为图片框的背景色是默认的控件颜色,这反过来意味着标签颜色是这种颜色

在您显示的图像中,图像似乎是纯色,因此可以选择将文本的背景色设置为与此相同的颜色

如果它是一个动态图像,那么您必须一起破解您自己的解决方案,脑海中浮现的一些是:

  • 计算出标签位置图像的颜色,然后将其设置为相同的颜色(希望是纯色)
  • 在控件周围有一个面板,这样它至少看起来像样,当然这样你会看到更少的图像
  • 一个图片框本质上只是一个图形画布,所以你可以直接放在上面,但这仍然是一个黑客

如果你想将文本放在PictureBox上,为什么不使用Label而不是TextBox?@Purixi你可以用透明的背景实现
TextBox
。@tchelidze我已经试过了,但效果很差。在winforms中制作图形界面时,你总是会遇到困难,唯一真正的解决方案是要么减少图形界面,要么切换到wpf,而wpf没有这些问题(透明度),嗯。这里真正的问题是为什么?你为什么要这样做?你想解决什么问题?当你的目标是显示文本时,你为什么要使用PictureBox呢?答案顶部的说法是误导性的,并不完全正确。首先,WinForms的大部分是基于GDI(而不是GDI+),尤其是控件,因为它们只是使用GDI的本机Win32控件的包装器。其次,我假设你所说的“所有图形处理……都在处理器上完成,而不是在图形卡上完成”的意思是GDI+不是硬件加速的。虽然这是真的,但我不确定为什么这是相关的。缺乏硬件加速与缺乏透明度无关。此外,GDI是硬件加速的。@CodyGray-我已经删掉了我答案的这一部分,我原以为是GDI,但后来我自己又猜到了。更好。是的,问题在于WinForms是本地Win32控件的一个相当简单的包装器,因为它们是在20世纪80年代后期编写的,所以几乎没有理由支持真正的透明性。(我想现在没有什么理由这么说,但我想我已经过时了。)不过,这和硬件或渲染限制是两码事。10多年来,分层窗口一直受到硬件和API的支持。如果您愿意,您可以编写代码使事情透明,您只需自己绘制所有图形,而不会从框架中获得任何帮助。