微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何用透明颜色填充桌面?

如何解决如何用透明颜色填充桌面?

| 我使用此代码为桌面填充颜色。
IntPtr desktop = GetDC(IntPtr.Zero);
Graphics g = Graphics.FromHdc(desktop);
g.FillRectangle(new SolidBrush(Color.FromArgb(60,255,0),Screen.PrimaryScreen.Bounds);      
ReleaseDC(IntPtr.Zero,desktop);
这可以正常工作,但是非常慢。 如果我用非透明颜色Color.FromArgb(255,255,0,0)填充桌面,则它的工作速度非常快。 如何提高透明彩色绘图的速度?     

解决方法

        GDI +(System.Drawing使用的是GDI +)全部以软件实现,并且以其速度而闻名。 您可能最好以其他方式解决问题。尝试使用BorderStyle = None制作一个Form,调整其大小以填充整个屏幕,然后将其BackColor设置为红色,将Opacity设置为0.25(近似于alpha = 60)。     ,        使用GDI +进行涉及完全透明的任何事情总是非常缓慢。这是因为透明性涉及许多乘法和除法以混合像素颜色,而绘制不透明颜色只是覆盖旧像素的问题。它需要更多的处理器。 乔·怀特的方法是一个很好的选择。具有最大化的形式并带有背景色和低不透明度会很好,并且速度会更快。但是请记住,使用表单还需要考虑其他一些事项: 该表格将阻止单击桌面图标 用户可以最小化该窗体,除去红色调-即使它不在任务栏中,Windows键+ D也会将其最小化(当然,这只是编写代码以再次显示该窗体的问题) 该表单可能会超出其他表单的顶部,给它们带来红色调(您可以将表单设置为 低于所有其他表格,这将解决此问题) 它的速度不是那么慢,但是使用表单而不是直接绘制到桌面时,还有其他事情需要担心。 这实际上取决于您为什么要为桌面加上红色-根据您要实现的目标,可能还有其他更简单的方法: 您可以将桌面墙纸设置为红色-不会影响图标,但不会有任何性能问题 如果您不关心桌面交互,则可以截取屏幕截图,将其设置为红色,然后以最大化的形式显示。 如果您不认为需要经常重绘,则当前的方法就可以了 另外,不要忘记某些人有多个显示器设置。如果要覆盖所有监视器,则需要为每个监视器创建一个表单。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。