Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 透明winform上的C消除混叠行_C#_Winforms_Antialiasing - Fatal编程技术网

C# 透明winform上的C消除混叠行

C# 透明winform上的C消除混叠行,c#,winforms,antialiasing,C#,Winforms,Antialiasing,我正在做一个项目,基本上用一些快速使用的按钮在屏幕上绘制一个覆盖图,但是为了实现这一点,我需要在winform上绘制多边形,它是完全不可见的 使用透明键执行此操作相当容易,但是当我尝试使用抗锯齿使锯齿多边形平滑时,会出现问题。这是因为它将线条的颜色与透明键的颜色合并在一起,使其相当难看: 我用来画一个抗锯齿多边形的代码,非常简单,没有什么特别的 e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; e.Graphics.DrawPolygon(

我正在做一个项目,基本上用一些快速使用的按钮在屏幕上绘制一个覆盖图,但是为了实现这一点,我需要在winform上绘制多边形,它是完全不可见的

使用透明键执行此操作相当容易,但是当我尝试使用抗锯齿使锯齿多边形平滑时,会出现问题。这是因为它将线条的颜色与透明键的颜色合并在一起,使其相当难看:

我用来画一个抗锯齿多边形的代码,非常简单,没有什么特别的

e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;

e.Graphics.DrawPolygon( 
    new Pen( 
    new SolidBrush( 
        Color.Black )
        , 1 )
        , pointCharm );

我们将非常感谢您提供的任何帮助

不确定我是否正确理解您的Q,但不是使用透明度键,而是为多边形使用Color.FromArgb并指定alpha通道参数0是透明的,255是不透明的?问题是抗锯齿像素是半透明的,因此TP键将亮起。From的背景色没有alpha通道。我怀疑它能解决;也许用一支1.5号的钢笔画两次线,黑色,顶部的黑色1f钢笔宽度看起来就足够了。如果屏幕/窗体不会移动/更改很多,那么在屏幕上绘制并将结果从多边形绘制到一个区域也可以,但这不是很灵敏。透明键颜色可见只是问题的一部分。更重要的一点是,消除混叠只能在定义良好的背景色下工作。因此AA像素可以将前景混合到背景中。问题是,你的背景颜色完全不可预测。不管你身后的窗户是什么颜色的。你可以考虑的唯一诀窍是先创建一个屏幕截图。画那个位图,然后画上面的线。当然,对于像闪屏这样的东西,过一段时间它就不再像透明了。那么,我们是在做游戏吗-Tempest使用的是矢量显示,而不是像现在这样的光栅显示。完美的模拟线路。当事情变得半艰难时,像廉价汽车旅馆一样忽隐忽现,然而: