當前位置:編程學習大全網 - 源碼下載 - 用VB做新的lable控件

用VB做新的lable控件

等壹會兒給妳寫壹個,這個以前我做過的,不是很難。?

剛才看了壹下,其實不是四個三角形,因為三角形在vb繪圖裏不好畫,沒有直接的函數,我覺得最大的問題是要解決三角形的填充問題,其實妳說的其它的都好解決,就是現在要如何直接填充三角形區域,還有壹個就是妳這個所謂的變化大小,是不是當整體變化時,三角形的區域呈比例變化還是單獨可以控制,如果是單獨控制,那就麻煩了。?

現在我想到的最簡單的辦法就是這樣,妳以控件的對角線分出四個三角形來,分別以中心焦點為圓心,分別向四個方向填充四個半徑大於控件最大邊長,角度等於四個交叉的三角形的角度的扇形。角度需要根據控件的比例來定,最終的結果就是顯示出來四個三角形,因為多畫出的部分是看不到的。

大小變化就比較好弄了,在resize事件裏,寫上刷新畫圖,改變大小就可以。

至於如何用鼠標改變顏色,這個就是判斷鼠標的雙擊點,判斷落在哪個區域內,然後調出顏色對話框,修改顏色就可以。

如果有什麽不清楚的,可以繼續提問。?

至於如何計算鼠標的落點,這就比較麻煩,因為涉及到坐標轉換的問題。

首先作為自定義控件來講,鼠標的坐標是可以捕獲的,妳要把這個四方矩形分成四部分,現在的問題是如何判斷壹個點落在哪裏範圍裏,把這個問題轉換為數學問題來處理。

假設知道某壹個矩形的邊長和左上角點坐標,現在告訴妳壹個坐標,取某壹點,請問這壹點是在矩形對角線分開的四部分的哪壹個區域內。

現在進行坐標轉換,把基本坐標轉換到中間的那個焦點,相對應的鼠標的點也要轉換。轉換後就看X,Y的值,這個就比較簡單了吧

這個時候其實就把問題轉換為壹個點在這裏四個象限的那個象限,然後根據角度求出在那個顏色的部分。妳看到這裏應該差不多明白了吧。

關鍵是要細心的計算。附圖給妳?

妳要是不著急我找個時間給妳寫寫可以,我這段時間忙。

這樣吧我給妳個大體代碼,過個壹兩天吧,真的沒時間去寫啊。?

給妳寫了壹個,為了方便測試,我寫了個窗體下的,妳把它改成控件吧,

壹個窗體上壹個picture1,壹個label1,壹個Commondialog1

代碼如下

Const?pi?=?3.141592637

Dim?MidWidth?As?Double

Dim?MidHeight?As?Double

Dim?MyR?As?Double

Dim?IfDBClick?As?Boolean

Dim?MouseX?As?Single

Dim?MouseY?As?Single

Dim?Jiao?As?Single

Dim?FirstColor,?SecondColor,?ThreeColor,?FourColor?As?Long

Private?Sub?Form_Load()

MidWidth?=?Picture1.Width?/?2

MidHeight?=?Picture1.Height?/?2

MyR?=?2?*?MidHeight

If?MidWidth?>?MidHeight?Then?MyR?=?2?*?MidWidth

IfDBClick?=?False

FirstColor?=?vbBlue

SecondColor?=?vbRed

ThreeColor?=?vbYellow

FourColor?=?vbGreen

End?Sub

Function?GetColorFromDialog()?As?Long

Me.CommonDialog1.ShowColor

If?(CommonDialog1.Color?=?Null)?Then

Else

GetColorFromDialog?=?CommonDialog1.Color

End?If

End?Function

Sub?ChangeColor(ColorArea?As?Integer)

If?ColorArea?=?1?Then

FirstColor?=?GetColorFromDialog()

End?If

If?ColorArea?=?2?Then

SecondColor?=?GetColorFromDialog()

End?If

If?ColorArea?=?3?Then

ThreeColor?=?GetColorFromDialog()

End?If

If?ColorArea?=?4?Then

FourColor?=?GetColorFromDialog()

End?If

Picture1.Refresh

End?Sub

Private?Sub?Picture1_DblClick()

'找鼠標的雙擊點的位置坐標,判斷是否在範圍內

'首先進行坐標轉換

Dim?newX,?newY?As?Single

newX?=?MouseX?-?MidWidth

newY?=?MidHeight?-?MouseY

Dim?newJiao?As?Single

'對轉換後的坐標判斷象限

'第壹象限,對應1,2塊

If?(newX?>?0?And?newY?>?0)?Then

newJiao?=?Atn(newY?/?newX)

'這裏不考慮相等的情況

If?newJiao?>?Jiao?Then

'色塊2

ChangeColor?(2)

ElseIf?newJiao?<?Jiao?Then

'色塊1

ChangeColor?(1)

End?If

End?If

'第二象限,對應2,3塊

If?(newX?<?0?And?newY?>?0)?Then

newJiao?=?Atn(-newY?/?newX)

'這裏不考慮相等的情況

If?newJiao?>?Jiao?Then

'色塊2

ChangeColor?(2)

ElseIf?newJiao?<?Jiao?Then

'色塊3

ChangeColor?(3)

End?If

End?If

'第三象限,對應3,4塊

If?(newX?<?0?And?newY?<?0)?Then

newJiao?=?Atn(newY?/?newX)

'這裏不考慮相等的情況

If?newJiao?>?Jiao?Then

'色塊4

ChangeColor?(4)

ElseIf?newJiao?<?Jiao?Then

'色塊3

ChangeColor?(3)

End?If

End?If

'第四象限,對應4,1塊

If?(newX?>?0?And?newY?<?0)?Then

newJiao?=?Atn(-newY?/?newX)

'這裏不考慮相等的情況

If?newJiao?>?Jiao?Then

'色塊4

ChangeColor?(4)

ElseIf?newJiao?<?Jiao?Then

'色塊1

ChangeColor?(1)

End?If

End?If

End?Sub

Private?Sub?Picture1_MouseMove(Button?As?Integer,?Shift?As?Integer,?X?As?Single,?Y?As?Single)

MouseX?=?X

MouseY?=?Y

Label1.Caption?=?"X:"?&?X?&?"Y:"?&?Y

End?Sub

Private?Sub?Picture1_Paint()

Picture1.FillStyle?=?0

Picture1.FillColor?=?FirstColor

Jiao?=?Atn(MidHeight?/?MidWidth)

Picture1.Circle?(MidWidth,?MidHeight),?MyR,?FirstColor,?-2?*?pi?+?Jiao,?-Jiao

Picture1.FillStyle?=?0

Picture1.FillColor?=?SecondColor

Picture1.Circle?(MidWidth,?MidHeight),?MyR,?SecondColor,?-Jiao,?-pi?+?Jiao

Picture1.FillStyle?=?0

Picture1.FillColor?=?ThreeColor

Picture1.Circle?(MidWidth,?MidHeight),?MyR,?ThreeColor,?-pi?+?Jiao,?-pi?-?Jiao

Picture1.FillStyle?=?0

Picture1.FillColor?=?FourColor

Picture1.Circle?(MidWidth,?MidHeight),?MyR,?FourColor,?-pi?-?Jiao,?-2?*?pi?+?Jiao

End?Sub?

代碼有少許不完善的地方,在picture的resize方法裏面,應該刷新畫圖。這個妳自己搞吧。

  • 上一篇:如何用JAVA設計壹個遊戲,電腦和人玩剪刀石頭布遊戲,並且能顯示遊戲結果?
  • 下一篇:汕尾安卓源代碼
  • copyright 2024編程學習大全網