使用dc时消除不必要的图像绘制?

2024-06-25 23:41:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三个问题需要帮助。希望我不要要求太多。在

1)我正在设计一个包含一个框架和一个面板的简单GUI。假设我有两个图像,我用dc在面板上绘制。一个图像将持续淡入淡出(在计时器上),而第二个图像是静止的(不变)。褪色是通过改变图像的不透明度来实现的dc。清除()在重新绘制图像的新版本之前。在

我的问题是:如何在不影响第二个不变图像的情况下绘制淡入/淡出图像?这似乎会导致不必要的绘制,因为静止图像将与褪色图像一起重绘。我可以选择性地清除第一个图像而不影响第二个图像吗?这是我的绘图功能:

def on_paint(self, event):
    dc = wx.PaintDC(self)
    dc = wx.BufferedDC(dc)

    brush = wx.Brush('#3B3B3B')
    dc.SetBackground(brush)
    dc.Clear()

    # Draw the first image (stationary)
    dc.DrawBitmap(stationaryBitmap, 120, 0, True)

    # Draw the second image (fading)
    image = self.image.AdjustChannels(1, 1, 1, self.factoralpha)
    fadingBitmap = wx.BitmapFromImage(image)
    dc.DrawBitmap(fadingBitmap, 120, 0, True)

2)如何将事件绑定到wx图像反对?我希望能够单击淡入/淡出图像,尽管我似乎无法为其分配id。目标是绑定一个类似于我可以使用wx.StaticBitmap. 在

^{pr2}$

3)是否可以wx.DrawBitmap在尺码机里?它似乎只需要一个x,y坐标对。在

dc.DrawBitmap(bitmap, 120, 0, True)

谢谢大家。在


Tags: the图像imageself框架true面板绘制
1条回答
网友
1楼 · 发布于 2024-06-25 23:41:36

1)对于性能,我建议使用MemoryDC并仅在需要时更新图形。请看这里:BufferedCanvas。您可能需要使用两个以上的缓冲区,因为您正在使用两个图像(请参见示例)。在

2)我不知道这件事,但你有没有试着把面板绑定起来,使面板淡入/淡出? 你可以直接在wx.面板. 在

问候

相关问题 更多 >