亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ogl.py

?? 用wxPython編寫GUI程序的樣例代碼
?? PY
字號:
# -*- coding: iso-8859-1 -*-
# 11/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o Updated for wx namespace
# 
# 20040508 - Pierre Hj鋖m
#
# o Changed to use the python version of OGL
# o Added TextShape, CompositeShape and CompositeShape with divisions
#
# 20040830 - Pierre Hj鋖m
#
# o Added DrawnShape
#

import wx
import wx.lib.ogl as ogl

import  images

#----------------------------------------------------------------------

class DrawnShape(ogl.DrawnShape):
    def __init__(self):
        ogl.DrawnShape.__init__(self)

        self.SetDrawnBrush(wx.WHITE_BRUSH)
        self.SetDrawnPen(wx.BLACK_PEN)
        self.DrawArc((0, -10), (30, 0), (-30, 0))

        self.SetDrawnPen(wx.Pen("#ff8030"))
        self.DrawLine((-30, 5), (30, 5))

        self.SetDrawnPen(wx.Pen("#00ee10"))
        self.DrawRoundedRectangle((-20, 10, 40, 10), 5)

        self.SetDrawnPen(wx.Pen("#9090f0"))
        self.DrawEllipse((-30, 25, 60, 20))

        self.SetDrawnTextColour(wx.BLACK)
        self.SetDrawnFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL))
        self.DrawText("DrawText", (-26, 28))

        self.SetDrawnBrush(wx.GREEN_BRUSH)
        self.DrawPolygon([(-100, 5), (-45, 30), (-35, 20), (-30, 5)])

        self.SetDrawnPen(wx.BLACK_PEN)
        self.DrawLines([(30, -45), (40, -45), (40 ,45), (30, 45)])

        # Make sure to call CalculateSize when all drawing is done
        self.CalculateSize()
        
#----------------------------------------------------------------------

class DiamondShape(ogl.PolygonShape):
    def __init__(self, w=0.0, h=0.0):
        ogl.PolygonShape.__init__(self)
        if w == 0.0:
            w = 60.0
        if h == 0.0:
            h = 60.0

        points = [ (0.0,    -h/2.0),
                   (w/2.0,  0.0),
                   (0.0,    h/2.0),
                   (-w/2.0, 0.0),
                   ]

        self.Create(points)


#----------------------------------------------------------------------

class RoundedRectangleShape(ogl.RectangleShape):
    def __init__(self, w=0.0, h=0.0):
        ogl.RectangleShape.__init__(self, w, h)
        self.SetCornerRadius(-0.3)


#----------------------------------------------------------------------

class CompositeDivisionShape(ogl.CompositeShape):
    def __init__(self, canvas):
        ogl.CompositeShape.__init__(self)

        self.SetCanvas(canvas)

        # create a division in the composite
        self.MakeContainer()

        # add a shape to the original division
        shape2 = ogl.RectangleShape(40, 60)
        self.GetDivisions()[0].AddChild(shape2)

        # now divide the division so we get 2
        self.GetDivisions()[0].Divide(wx.HORIZONTAL)

        # and add a shape to the second division (and move it to the
        # centre of the division)
        shape3 = ogl.CircleShape(40)
        shape3.SetBrush(wx.CYAN_BRUSH)
        self.GetDivisions()[1].AddChild(shape3)
        shape3.SetX(self.GetDivisions()[1].GetX())

        for division in self.GetDivisions():
            division.SetSensitivityFilter(0)
        
#----------------------------------------------------------------------

class CompositeShape(ogl.CompositeShape):
    def __init__(self, canvas):
        ogl.CompositeShape.__init__(self)

        self.SetCanvas(canvas)

        constraining_shape = ogl.RectangleShape(120, 100)
        constrained_shape1 = ogl.CircleShape(50)
        constrained_shape2 = ogl.RectangleShape(80, 20)

        constraining_shape.SetBrush(wx.BLUE_BRUSH)
        constrained_shape2.SetBrush(wx.RED_BRUSH)
        
        self.AddChild(constraining_shape)
        self.AddChild(constrained_shape1)
        self.AddChild(constrained_shape2)

        constraint = ogl.Constraint(ogl.CONSTRAINT_MIDALIGNED_BOTTOM, constraining_shape, [constrained_shape1, constrained_shape2])
        self.AddConstraint(constraint)
        self.Recompute()

        # If we don't do this, the shapes will be able to move on their
        # own, instead of moving the composite
        constraining_shape.SetDraggable(False)
        constrained_shape1.SetDraggable(False)
        constrained_shape2.SetDraggable(False)

        # If we don't do this the shape will take all left-clicks for itself
        constraining_shape.SetSensitivityFilter(0)

        
#----------------------------------------------------------------------

class DividedShape(ogl.DividedShape):
    def __init__(self, width, height, canvas):
        ogl.DividedShape.__init__(self, width, height)

        region1 = ogl.ShapeRegion()
        region1.SetText('DividedShape')
        region1.SetProportions(0.0, 0.2)
        region1.SetFormatMode(ogl.FORMAT_CENTRE_HORIZ)
        self.AddRegion(region1)

        region2 = ogl.ShapeRegion()
        region2.SetText('This is Region number two.')
        region2.SetProportions(0.0, 0.3)
        region2.SetFormatMode(ogl.FORMAT_CENTRE_HORIZ|ogl.FORMAT_CENTRE_VERT)
        self.AddRegion(region2)

        region3 = ogl.ShapeRegion()
        region3.SetText('Region 3\nwith embedded\nline breaks')
        region3.SetProportions(0.0, 0.5)
        region3.SetFormatMode(ogl.FORMAT_NONE)
        self.AddRegion(region3)

        self.SetRegionSizes()
        self.ReformatRegions(canvas)


    def ReformatRegions(self, canvas=None):
        rnum = 0

        if canvas is None:
            canvas = self.GetCanvas()

        dc = wx.ClientDC(canvas)  # used for measuring

        for region in self.GetRegions():
            text = region.GetText()
            self.FormatText(dc, text, rnum)
            rnum += 1


    def OnSizingEndDragLeft(self, pt, x, y, keys, attch):
        print "***", self
        ogl.DividedShape.OnSizingEndDragLeft(self, pt, x, y, keys, attch)
        self.SetRegionSizes()
        self.ReformatRegions()
        self.GetCanvas().Refresh()


#----------------------------------------------------------------------

class MyEvtHandler(ogl.ShapeEvtHandler):
    def __init__(self, log, frame):
        ogl.ShapeEvtHandler.__init__(self)
        self.log = log
        self.statbarFrame = frame

    def UpdateStatusBar(self, shape):
        x, y = shape.GetX(), shape.GetY()
        width, height = shape.GetBoundingBoxMax()
        self.statbarFrame.SetStatusText("Pos: (%d, %d)  Size: (%d, %d)" %
                                        (x, y, width, height))


    def OnLeftClick(self, x, y, keys=0, attachment=0):
        shape = self.GetShape()
        canvas = shape.GetCanvas()
        dc = wx.ClientDC(canvas)
        canvas.PrepareDC(dc)

        if shape.Selected():
            shape.Select(False, dc)
            #canvas.Redraw(dc)
            canvas.Refresh(False)
        else:
            redraw = False
            shapeList = canvas.GetDiagram().GetShapeList()
            toUnselect = []

            for s in shapeList:
                if s.Selected():
                    # If we unselect it now then some of the objects in
                    # shapeList will become invalid (the control points are
                    # shapes too!) and bad things will happen...
                    toUnselect.append(s)

            shape.Select(True, dc)

            if toUnselect:
                for s in toUnselect:
                    s.Select(False, dc)

                ##canvas.Redraw(dc)
                canvas.Refresh(False)

        self.UpdateStatusBar(shape)


    def OnEndDragLeft(self, x, y, keys=0, attachment=0):
        shape = self.GetShape()
        ogl.ShapeEvtHandler.OnEndDragLeft(self, x, y, keys, attachment)

        if not shape.Selected():
            self.OnLeftClick(x, y, keys, attachment)

        self.UpdateStatusBar(shape)


    def OnSizingEndDragLeft(self, pt, x, y, keys, attch):
        ogl.ShapeEvtHandler.OnSizingEndDragLeft(self, pt, x, y, keys, attch)
        self.UpdateStatusBar(self.GetShape())


    def OnMovePost(self, dc, x, y, oldX, oldY, display):
        shape = self.GetShape()
        ogl.ShapeEvtHandler.OnMovePost(self, dc, x, y, oldX, oldY, display)
        self.UpdateStatusBar(shape)
        if "wxMac" in wx.PlatformInfo:
            shape.GetCanvas().Refresh(False)

    def OnRightClick(self, *dontcare):
        self.log.WriteText("%s\n" % self.GetShape())


#----------------------------------------------------------------------

class TestWindow(ogl.ShapeCanvas):
    def __init__(self, parent, log, frame):
        ogl.ShapeCanvas.__init__(self, parent)

        maxWidth  = 1000
        maxHeight = 1000
        self.SetScrollbars(20, 20, maxWidth/20, maxHeight/20)

        self.log = log
        self.frame = frame
        self.SetBackgroundColour("LIGHT BLUE") #wx.WHITE)
        self.diagram = ogl.Diagram()
        self.SetDiagram(self.diagram)
        self.diagram.SetCanvas(self)
        self.shapes = []
        self.save_gdi = []

        rRectBrush = wx.Brush("MEDIUM TURQUOISE", wx.SOLID)
        dsBrush = wx.Brush("WHEAT", wx.SOLID)

        self.MyAddShape(
            CompositeDivisionShape(self), 
            270, 310, wx.BLACK_PEN, wx.BLUE_BRUSH, "Division"
            )
        
        self.MyAddShape(
            CompositeShape(self), 
            100, 260, wx.BLACK_PEN, wx.RED_BRUSH, "Composite"
            )
        
        self.MyAddShape(
            ogl.CircleShape(80), 
            75, 110, wx.Pen(wx.BLUE, 3), wx.GREEN_BRUSH, "Circle"
            )
            
        self.MyAddShape(
            ogl.TextShape(120, 45), 
            160, 35, wx.GREEN_PEN, wx.LIGHT_GREY_BRUSH, "OGL is now a\npure Python lib!"
            )

        self.MyAddShape(
            ogl.RectangleShape(85, 50), 
            305, 60, wx.BLACK_PEN, wx.LIGHT_GREY_BRUSH, "Rectangle"
            )

        self.MyAddShape(
            DrawnShape(),
            500, 80, wx.BLACK_PEN, wx.BLACK_BRUSH, "DrawnShape"
            )

        ds = self.MyAddShape(
            DividedShape(140, 150, self), 
            520, 265, wx.BLACK_PEN, dsBrush, ''
            )

        self.MyAddShape(
            DiamondShape(90, 90), 
            355, 260, wx.Pen(wx.BLUE, 3, wx.DOT), wx.RED_BRUSH, "Polygon"
            )
            
        self.MyAddShape(
            RoundedRectangleShape(95, 70), 
            345, 145, wx.Pen(wx.RED, 2), rRectBrush, "Rounded Rect"
            )

        bmp = images.getTest2Bitmap()
        mask = wx.Mask(bmp, wx.BLUE)
        bmp.SetMask(mask)

        s = ogl.BitmapShape()
        s.SetBitmap(bmp)
        self.MyAddShape(s, 225, 130, None, None, "Bitmap")

        #dc = wx.ClientDC(self)
        #self.PrepareDC(dc)

        for x in range(len(self.shapes)):
            fromShape = self.shapes[x]
            if x+1 == len(self.shapes):
                toShape = self.shapes[0]
            else:
                toShape = self.shapes[x+1]

            line = ogl.LineShape()
            line.SetCanvas(self)
            line.SetPen(wx.BLACK_PEN)
            line.SetBrush(wx.BLACK_BRUSH)
            line.AddArrow(ogl.ARROW_ARROW)
            line.MakeLineControlPoints(2)
            fromShape.AddLine(line, toShape)
            self.diagram.AddShape(line)
            line.Show(True)


    def MyAddShape(self, shape, x, y, pen, brush, text):
        # Composites have to be moved for all children to get in place
        if isinstance(shape, ogl.CompositeShape):
            dc = wx.ClientDC(self)
            self.PrepareDC(dc)
            shape.Move(dc, x, y)
        else:
            shape.SetDraggable(True, True)
        shape.SetCanvas(self)
        shape.SetX(x)
        shape.SetY(y)
        if pen:    shape.SetPen(pen)
        if brush:  shape.SetBrush(brush)
        if text:
            for line in text.split('\n'):
                shape.AddText(line)
        #shape.SetShadowMode(ogl.SHADOW_RIGHT)
        self.diagram.AddShape(shape)
        shape.Show(True)

        evthandler = MyEvtHandler(self.log, self.frame)
        evthandler.SetShape(shape)
        evthandler.SetPreviousHandler(shape.GetEventHandler())
        shape.SetEventHandler(evthandler)

        self.shapes.append(shape)
        return shape


    def OnBeginDragLeft(self, x, y, keys):
        self.log.write("OnBeginDragLeft: %s, %s, %s\n" % (x, y, keys))

    def OnEndDragLeft(self, x, y, keys):
        self.log.write("OnEndDragLeft: %s, %s, %s\n" % (x, y, keys))


#----------------------------------------------------------------------

def runTest(frame, nb, log):
    # This creates some pens and brushes that the OGL library uses.
    # It should be called after the app object has been created, but
    # before OGL is used.
    ogl.OGLInitialize()

    win = TestWindow(nb, log, frame)
    return win
    
#----------------------------------------------------------------------


overview = """<html><body>
<h2>Object Graphics Library</h2>

The Object Graphics Library is a library supporting the creation and
manipulation of simple and complex graphic images on a canvas.

<p>The OGL library was originally written in C++ and provided to
wxPython via an extension module wrapper as is most of the rest of
wxPython.  The code has now been ported to Python (with many thanks to
Pierre Hj鋖m!) in order to make it be more easily maintainable and
less likely to get rusty because nobody cares about the C++ lib any
more.

"""

if __name__ == '__main__':
    import sys, os
    import run
    run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av亚洲精华国产精华精华| 久久综合九色综合久久久精品综合| 欧美日韩国产综合一区二区三区 | wwwwxxxxx欧美| 一区二区三区丝袜| 国产成人无遮挡在线视频| 欧美日韩一区二区三区高清| 国产精品久久久久久久久快鸭 | 97精品国产露脸对白| 国产精品视频一二| 久久精品99久久久| 欧美男同性恋视频网站| 综合久久国产九一剧情麻豆| 国产99久久久国产精品免费看| 欧美一区二区三区影视| 午夜精品久久久久影视| 色悠久久久久综合欧美99| 欧美激情综合五月色丁香 | 亚洲国产视频在线| 色综合色综合色综合| 亚洲欧美影音先锋| 国产成人亚洲综合色影视| 精品乱人伦一区二区三区| 日韩精品成人一区二区三区 | 精品日韩成人av| 免费看日韩a级影片| 欧美一级xxx| 秋霞影院一区二区| 8v天堂国产在线一区二区| 亚洲国产精品一区二区www| 欧美午夜精品电影| 亚洲图片欧美视频| 欧美精品免费视频| 日本成人中文字幕| 久久影院视频免费| 国产成人精品网址| 亚洲视频综合在线| 在线免费视频一区二区| 亚洲第一在线综合网站| 欧美性猛交xxxx黑人交| 五月天亚洲精品| 日韩欧美高清在线| 国产精品一区二区免费不卡| 国产欧美中文在线| 99视频有精品| 亚洲成人免费av| 欧美成人video| 国产乱淫av一区二区三区 | 日本韩国欧美三级| 五月天一区二区| 欧美成人综合网站| 成人毛片视频在线观看| 亚洲精品日韩一| 欧美日韩成人一区| 国产在线精品一区二区夜色| 国产精品你懂的在线| 在线精品观看国产| 激情综合色综合久久综合| 日本一区二区电影| 欧美视频自拍偷拍| 精品一区二区影视| 亚洲激情男女视频| 欧美va亚洲va在线观看蝴蝶网| 粉嫩av一区二区三区在线播放| 亚洲精品日产精品乱码不卡| 欧美一级欧美三级| 精品国产乱码久久久久久闺蜜| 99免费精品在线| 麻豆精品视频在线观看| 国产精品久久久久一区二区三区 | 久久精品国产一区二区三区免费看| 欧美精品一区二区三区一线天视频| 成人av免费观看| 奇米精品一区二区三区四区| 久久免费美女视频| 欧美丰满高潮xxxx喷水动漫| 丰满亚洲少妇av| 免费人成在线不卡| 亚洲一二三四在线观看| 国产网站一区二区| 在线播放中文一区| 色av一区二区| 成人av网站在线观看免费| 蜜桃av一区二区三区电影| 亚洲免费观看高清完整版在线观看 | 国产99一区视频免费| 亚洲国产精品一区二区尤物区| 国产婷婷色一区二区三区| 欧美美女一区二区在线观看| 从欧美一区二区三区| 久久精品国产久精国产爱| 艳妇臀荡乳欲伦亚洲一区| 中文字幕av在线一区二区三区| 欧美日韩国产精选| 色婷婷亚洲综合| 99久精品国产| caoporn国产一区二区| 国产**成人网毛片九色| 狠狠色综合色综合网络| 亚洲超碰精品一区二区| 亚洲最色的网站| 亚洲欧美日韩久久| 亚洲图片激情小说| 日韩理论片一区二区| 国产免费观看久久| 欧美激情资源网| 久久久久综合网| 精品国产网站在线观看| 欧美不卡一区二区| 久久奇米777| 久久综合色鬼综合色| 久久青草欧美一区二区三区| 精品国产欧美一区二区| 精品国一区二区三区| 欧美精品一区视频| 中国色在线观看另类| 国产精品女主播在线观看| 亚洲欧美在线另类| 一区二区三区在线观看欧美| 一区二区在线观看不卡| 亚洲自拍偷拍欧美| 日韩高清中文字幕一区| 久久国产综合精品| 国产一区二区伦理| 99久久精品免费看国产免费软件| 91免费视频网址| 欧美日韩精品欧美日韩精品一 | 亚洲欧美日韩国产成人精品影院 | 免费不卡在线视频| 精油按摩中文字幕久久| 国产高清无密码一区二区三区| 成人黄色小视频| 欧美日韩在线播放一区| 制服丝袜中文字幕一区| 久久久久久久网| 亚洲精品国产a久久久久久 | 一区二区日韩电影| 麻豆成人综合网| 91在线精品一区二区| 欧美精品在线一区二区| 久久综合色播五月| 亚洲乱码国产乱码精品精可以看| 亚洲1区2区3区视频| 九九精品视频在线看| 一本大道av一区二区在线播放| 欧美日韩aaa| 国产精品区一区二区三| 午夜精品123| 国产成人在线视频网址| 欧美日韩一区二区三区不卡| 久久品道一品道久久精品| 亚洲午夜在线观看视频在线| 国产原创一区二区| 欧美日韩在线综合| 欧美国产精品专区| 老司机一区二区| 一本一道久久a久久精品| 精品国产一区二区三区av性色 | 91精品国产综合久久婷婷香蕉| 久久综合色婷婷| 午夜视频一区二区三区| 国产xxx精品视频大全| 精品1区2区3区| 亚洲三级免费观看| 国产麻豆精品视频| 欧美一区二区福利在线| 亚洲乱码中文字幕| 成人福利电影精品一区二区在线观看 | 成人黄色777网| 日韩视频永久免费| 亚洲尤物视频在线| 福利视频网站一区二区三区| 欧美一区二区三区视频| 亚洲黄色小视频| heyzo一本久久综合| 国产日韩精品久久久| 另类小说图片综合网| 欧美日韩成人激情| 亚洲午夜电影在线| 欧洲精品一区二区三区在线观看| 国产女同互慰高潮91漫画| 国内久久精品视频| 日韩一区二区免费在线电影 | 亚洲男帅同性gay1069| 成人免费av资源| 中文字幕免费不卡在线| 国产剧情一区在线| 精品免费99久久| 精品一二三四区| 国产精品欧美一级免费| 国产精品欧美经典| 国产成人综合在线观看| 国产日韩欧美精品电影三级在线| 精品一区二区三区在线视频| 日韩欧美在线观看一区二区三区| 午夜久久久久久久久| 欧美日韩综合在线免费观看| 亚洲一线二线三线视频| 在线看一区二区| 午夜精品久久久久|