Alexci hat geschrieben:vielleicht geht es mit Hilfe von wx.MemoryDC() oder wx.BufferedDC(), ich kenne mich aber damit nicht aus.
Hi Aleksandar!
In diesem Beispiel wird ein Quadrat gezeichnet.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
import wx
wx.SetDefaultPyEncoding("iso-8859-1")
class MyFrame(wx.Frame):
def __init__(self, parent = None, id = -1, title = "Rounded Rectangle"):
wx.Frame.__init__(self, parent, id, title)
panel = wx.Panel(self, size = (200, 200))
self.panel = panel
panel.Bind(wx.EVT_PAINT, self.on_panel_paint)
panel.Fit()
self.Fit()
self.SetSizeHintsSz(self.GetSizeTuple())
def on_panel_paint(self, event):
dc = wx.PaintDC(self.panel)
print dc.GetHDC() # Das könnte evt. ein Einstiegspunkt für dich sein.
rect = wx.Rect(50, 50, 100, 100)
dc.DrawRoundedRectangleRect(rect, 8)
def main():
app = wx.PySimpleApp()
f = MyFrame()
f.Center()
f.Show()
app.MainLoop()
if __name__ == "__main__":
main()
Falls der bereits von dir geschriebene Code prinzipiell funktioniert, dann könnte die on_panel_paint-Methode so abgeändert werden:
Code: Alles auswählen
def on_panel_paint(self, event):
dc = wx.PaintDC(self.panel)
hdc = dc.GetHDC()
p = win32com.client.dynamic.Dispatch('PinPoint.Plate')
p.AttachFITS('test.fts')
m = p.NewPlateDIB()
m.Create(1, 1, 1, 1)
m.Render(7600, 4000)
m.PaintPicture(hdc)
Wenn es so funktioniert, dann kannst du die Sache mit ``wx.BufferedDC()`` und Co. beschleunigen, denn mit dieser Methode wird derzeit bei jedem Paint-Ereignis alles komplett neu berechnet und neu gezeichnet. Aber zumindest findest du so schon mal raus, ob du mit wxPython weiter kommst.
mfg
Gerold
