【问题标题】:How to draw directly on the screen with wxpython?如何用 wxpython 直接在屏幕上绘图?
【发布时间】:2012-01-18 13:28:46
【问题描述】:

我正在使用禁用合成的 Linux 和 e17,我想创建一个能够直接在屏幕上绘制简单几何形状和文本的程序。

我的第一个想法是:

import wx
app = wx.App(False)
s = wx.ScreenDC()
s.Pen = wx.Pen("#FF0000")
s.DrawRectangle(60,60,120,120)

但这行不通,所以我将最后一行替换为:

for i in range(0,129):
    s.DrawRectangle(60,60,120,120)

这以某种方式使它起作用,但这是一个 hacky 解决方案,并且为了画线,我需要更多地增加迭代次数。

我认为问题可能出在透明度上,但不知道如何解决。

任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 您的代码在 Windows 上运行良好。
  • 是的,我认为它在大多数其他 Linux WM 和 DE 中也可以正常工作。启蒙运动有些不同寻常。

标签: python drawing wxpython overlay


【解决方案1】:

您是否在任何地方指定StartDrawingOnTop?否则,您可能会遇到透明度问题,因此您可以尝试明确设置。

【讨论】:

  • 确实,我忘记了。我为这种愚蠢的错误感到羞耻。
【解决方案2】:

我认为您可以通过创建框架和面板然后调用框架的 SetTransparency 方法来设置它来做到这一点。您肯定想使用 DC 或类似 FloatCanvas 的东西来进行绘图。无论如何都值得一试。

【讨论】:

  • 这里可能缺乏透明度是一个问题,但我会尝试这种方式,因为它听起来确实是一个更好的主意。
  • 你也可以在 wxPython 邮件列表中询问。那里有很多 Linux 开发人员,他们以疯狂而笨拙的方式使用 wx 的绘图功能。
猜你喜欢
  • 2011-03-04
  • 1970-01-01
  • 2014-09-21
  • 1970-01-01
  • 2014-01-18
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多