可以顯示啊,不能顯示的圖形是坐標(biāo)超出范圍了,你可以在PicDRAW上查看坐標(biāo)!
公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出漳縣免費(fèi)做網(wǎng)站回饋大家。
把圖片控件的AutoReDraw設(shè)為True可以顯示 Form_Load()
中的圖形,以及以后來窗體刷新時(shí)圖形不丟失。
你想的以及接近了,要達(dá)到你要的效果,需要使用多線程,寫入數(shù)據(jù)庫和顯示繪圖的結(jié)果各一個(gè)線程
當(dāng)窗體被隱藏之后,在窗體重新出現(xiàn)時(shí),系統(tǒng)將觸發(fā)Paint事件,重繪整個(gè)窗體,此時(shí)如果Paint方法為空,那么您使用graphic對(duì)象繪制的圖將全部消失。
要使您繪制的圖能始終出現(xiàn),您就必須在Paint事件觸發(fā)時(shí),在其方法中添加繪制窗體的代碼。由于您的圖是任意的,所以您可以通過使用一個(gè)全局的數(shù)組或數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在Form上的圖像信息,然后在Form_Paint方法中讀取圖像信息并重繪。如果Form上繪制了新的圖像,那么您可以將這個(gè)圖像信息添加到全局的數(shù)組或數(shù)據(jù)結(jié)構(gòu)中,以保證在Form上始終是正確的圖像。
另外:
VB.NET2008中的AutoRedraw問題
.NET 2009-05-04 15:55:22 閱讀44 評(píng)論0 字號(hào):大中小
VB6中的PictureBox控件的有AutoRedraw屬性,設(shè)置為True,則窗口最小化或被覆蓋后重新打開窗口,原來的圖形還在(使用Line等函數(shù)畫的圖形),但VB.NET沒有了這個(gè)屬性,為此煩了好久,MSDN上也沒有找到明確的代用方法,上星期去書店翻了翻,終于明白怎么會(huì)事.
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Bmp As Bitmap
Dim Gra As Graphics
Dim Pen As New Pen(Color.White)
Bmp = New Bitmap(PictureBox1.Width, PictureBox1.Height)
Gra = Graphics.FromImage(Bmp)
Dim Dia As Single = Math.Min(PictureBox1.Height, PictureBox1.Width) * 0.5!
Gra.DrawArc(Pen, (PictureBox1.Width - Dia) / 2.0!, (PictureBox1.Height - Dia) / 2.0!, Dia, Dia, 0, 360)
Gra.DrawLine(Pen, 0, 0, PictureBox1.Width / 2.0!, PictureBox1.Height / 2.0!)
PictureBox1.Image = Bmp
End Sub
上面代碼畫的圖形在最小化后重新打開圖形還在,下面的則沒有了.
Private Sub PictureBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.DoubleClick
Dim Gra As Graphics = PictureBox1.CreateGraphics()
Dim Pen As New Pen(Color.Magenta)
Dim Dia As Single = Math.Min(PictureBox1.Height, PictureBox1.Width) * 0.5!
Gra.DrawRectangle(Pen, (PictureBox1.Width - Dia) / 2.0!, (PictureBox1.Height - Dia) / 2.0!, Dia, Dia)
End Sub
希望對(duì)你有幫助!
不用PictureBoxTest.Image屬性,直接把圖形繪制到PictureBoxTest上面就可以了。
Dim?button?As?Integer?=?0
Private?Sub?Button1_Click(ByVal?sender?As?Object,?ByVal?e?As?EventArgs)?_
Handles?Button1.Click
Using?g?As?Graphics?=?Graphics.FromHwnd(PictureBoxTest.Handle)
Dim?penRed?As?Pen?=?New?Pen(Color.Red,?1)?????'定義紅色畫筆??
Dim?penblue?As?Pen?=?New?Pen(Color.Blue,?1)?'定義藍(lán)色畫筆?
If?button?=?0?Then
g.DrawLine(penRed,?0,?0,?100,?100)
button?=?1
ElseIf?button?=?1?Then
g.DrawLine(penblue,?100,?100,?200,?200)
button?=?0
End?If
End?Using
End?Sub
只有windows 7等以上版本的操作系統(tǒng)才可以自動(dòng)消失。其他windows NT內(nèi)核版本,例如:windows 2003,windows xp,windows 2000等老版本,要讓圖標(biāo)托盤消失,必須至少要兩種方法:
1:退出程序時(shí),在代碼里調(diào)用刪除托盤圖標(biāo)的代碼。
2:程序崩潰時(shí)或者是手動(dòng)結(jié)束進(jìn)程后,圖標(biāo)遺留在右下角,只能用鼠標(biāo)移動(dòng)到上面,它才會(huì)消失。
所以,必須要在代碼里面寫上退出托盤的程序,因?yàn)楹芏嗳水?dāng)然也包括我自己,有時(shí)候編寫代碼,只編寫了啟動(dòng)托盤的代碼,沒有寫退出托盤的代碼,以為程序退出了,托盤圖標(biāo)會(huì)自己消失。而事實(shí)上不是這樣的,托盤的啟動(dòng)和退出,必須要自己來顯式的在程序里面實(shí)現(xiàn)。啟動(dòng)托盤實(shí)現(xiàn)后,必須要實(shí)現(xiàn)退出托盤。
所以建議大家在編寫托盤圖標(biāo)程序時(shí),在退出程序的時(shí)候,顯式的調(diào)用刪除托盤圖標(biāo)的代碼就可以了。