Re: a graphics issue I can not figure out
Rufus Smith <[email protected]>
| Newsgroups | gmane.comp.python.wxpython |
|---|---|
| Message-ID | <CAKVBxLjciPXk-jkRdeRj8TPsGGgAeOf49M5KxBXRgmJ-J_daOA@mail.gmail.com> |
You are aware the coordinate origin (0,0) is in the upper left corner, (not lower left, as we manually draw grids), and that the y axis goes down as the value of y increases? On Wed, Mar 4, 2020 at 6:58 PM Nathan smith <[email protected]> wrote: > Hi Group, > > I have recently been playing around with the drawing tools available in > wx python. > > My goal was to create a grid and then plot some lines upon it. > > I have got the grid working, but I can not seem to position a triangle > correctly. > > Here is some code which I have explained best I can: > > Note in the below code the variable g just refers to a way I store > global variables. > > class Mywin(wx.Frame): > def __init__(self, parent, title): > > super(Mywin, self).__init__(parent, title = title,size = (350,250), > style=wx.DEFAULT_FRAME_STYLE) > self.Maximize() > g.center_point=self.GetClientSize() > g.center_point=[g.center_point.x/2, g.center_point.y/2] > > # this is the screen where the graph is drawn. Called from a main menu > hence the first line. > > def graph(self): > self.mainpanel.Hide() > self.Bind(wx.EVT_PAINT, self.onpaint) > self.Bind(wx.EVT_KEY_DOWN, self.onKeyPress) > self.SetBackgroundColour('WHITE') > self.Layout() > self.Fit() > self.Show() > self.SetFocus() > > # the paint function. to give you an example of what is in the g.lines > variable it is something like this: > > g.lines=[[[1, 1], [5, 1], wx.Colour(255, 0, 0, 255), 100], [[1, 1], [1, > 5], wx.Colour(255, 0, 0, 255), 100], [[1, 5], [5, 1], wx.Colour(255, 0, > 0, 255), 100]] > > def onpaint(self, event): > self.dc = wx.PaintDC(self) > self.dc.Clear() > self.pen = wx.Pen(wx.BLACK_PEN) > self.dc.SetPen(self.pen) > p1=[g.center_point[0]-(38*6), g.center_point[1]-(38*6)] > p2=[g.center_point[0]+(38*5), g.center_point[1]-(38*6)] > for x in range(11): > self.dc.DrawLine(p1[0],p1[1],p2[0],p2[1]) > p1 = [p1[0],p1[1]+38] > p2 = [p2[0],p2[1]+38] > p1=[g.center_point[0]-(38*6), g.center_point[1]-(38*6)] > p2=[g.center_point[0]-(38*6), g.center_point[1]+(38*5)] > for x in range(11): > self.dc.DrawLine(p1[0],p1[1],p2[0],p2[1]) > p1 = [p1[0]+38,p1[1]] > p2 = [p2[0]+38,p2[1]] > bl=[g.center_point[0]-(38*6), g.center_point[1]-(38*6)] # this is the > bottom left corner coordinates and from this we work out where the user > selected the line to go. (lines are made by using the arrow keys and such.) > > for x in g.lines: > self.pen.SetColour(wx.Colour(x[2])) > self.pen.SetStyle(x[3]) > self.dc.DrawLine(bl[0]+(x[0][0]*38)+10, bl[1]+(x[0][1]*38)+10, > bl[0]+(x[1][0]*38)+10, bl[1]+(x[1][1]*38)+10) > > > When ever I do this using the coordinates specified, it always puts the > triangle in the top left, rather than the bottom left. > > I am doing *38 to compensate for the pixel to cm conversion. > > then +10 because I have this weird feeling if I draw directly over the > grid lines wx python will not show it? > > > Any help here would be appreciated. > > thanks' > > Nathan > > > -- > You received this message because you are subscribed to the Google Groups > "wxPython-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/wxpython-users/63cf31d1-f147-b066-92ed-f66a7d21038b%40gmail.com > . > -- You received this message because you are subscribed to the Google Groups "wxPython-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/wxpython-users/CAKVBxLjciPXk-jkRdeRj8TPsGGgAeOf49M5KxBXRgmJ-J_daOA%40mail.gmail.com.