日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

wxpython图形编程_wxpython  图像编程

發布時間:2023/12/2 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 wxpython图形编程_wxpython  图像编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1)目前遇到一個問題,就是wxpython顯示一個圖片,然后可以在圖片上畫矩形,點,line,circle and so

on,最后保存矩形的坐標.但是現在可以在屏幕上畫矩形,無法在圖片上做標記,我反思的原因是:如果要畫圖型,一定要創建一個dc對象,不管是memorydc

or clientdc,這個對象都是以整個屏幕為基礎的。而如果要顯示一張圖片的話,一定是要把圖片轉換成bitmap類型,然后再轉成靜態bitmap,也就是staticbitmap類型,和一個靜態文本類似,staticbitmap存儲的是每一個像素的坐標和像素值,相當于一個數組。

總結來講,就是覺得wxpython 的

dc的功能或許是自己還沒有理解,或許是根本沒考慮到動態做label,覺得dc無法實現在一個靜態文件上動態畫圖。?

目前整個邏輯我想不通,目前還沒有實現,在stackoverflow上搜了一下,baidu

so了一下,也沒有人解釋。mark一下,dc的概念。?

dc

:要在屏幕上繪畫,我們要用到一個名為device?context(設備上下文)的wxPython對象。設備上下文代表抽象的設備,它對于所有的設備有一套公用的繪畫方法

(1)在圖片上畫好矩形或者文本,然后將圖片顯示出來??

注意:MemoryDC works on a Bitmap, not a StaticBitmap

control.?

http://stackoverflow.com/questions/20287152/wxpython-draw-text-onto-existing-bitmap-or-image?

代碼如下:

bitmap = wx.Bitmap(location)

dc = wx.MemoryDC(bitmap)

text = 'whatever'

w, h = dc.GetSize()

tw, th = dc.GetTextExtent(text)

dc.DrawText(text, (w - tw) / 2, (h - th) / 2) #display

text in center del dc control = wx.StaticBitmap(self, -1,

bitmap)?

(2)wx.MemoryDC:用于繪制圖形到內存中的一個位圖中,此時不被顯示。然后你可以選擇該位圖,并使用wx.DC.Blit()方法來把這個位圖繪畫到一個窗口中。?

http://stackoverflow.com/questions/11786103/wxpython-drawing-on-a-staticbitmap?

def Draw(self, e):

img =

wx.Image("./poster/Test2.png",

wx.BITMAP_TYPE_ANY)

bit =

wx.EmptyBitmap(517,524)

imgBit =

wx.BitmapFromImage(img)

dc =

wx.MemoryDC(imgBit)

dc.SetPen(wx.Pen(wx.RED,

1))

dc.DrawLines(((83, 375),

(83, 42), (120, 42), (120,375), (83,375)))

dc.SelectObject(wx.NullBitmap)# I didn't know I had to deselect the

DC self.imageCtrl.SetBitmap(imgBit)

?imgBit.SaveFile("bit.bmp",

wx.BITMAP_TYPE_BMP)

我已經知道了需要對圖片做什么操作,在不顯示圖片的情況下預定義操作,然后保存圖片,圖片上有相應的矩形。?

(3)wxmemory兩個主要函數:dc=wxmemory()

dc.SelectObject(self,?bitmap)?

http://wxpython.org/docs/api/wx.MemoryDC-class.html

(4)給panel控件設置一個backgroundimage?

#coding:utf-8

import wx

#導入wxformbuilder生成的代碼

import BgDemo

class Main(wx.App):

def __init__(self,

redirect=False, filename=None):

wx.App.__init__(self, redirect,

filename)

dlg = BgDemo.MyFrame(None)

dlg.m_panel1.Bind(wx.EVT_ERASE_BACKGROUND,

self.OnEraseBackground)

dlg.Show()

def

OnEraseBackground(self, evt):

dc = evt.GetDC()

if not dc:

dc =

wx.ClientDC(self)

rect =

self.GetUpdateRegion().GetBox()

dc.SetClippingRect(rect)

dc.Clear()

bmp = wx.Bitmap("Sunset.jpg")

dc.DrawBitmap(bmp, 0, 0)

from:http://www.111cn.net/phper/python/59761.htm

(5)?

?

總結

以上是生活随笔為你收集整理的wxpython图形编程_wxpython  图像编程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。