VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

玩玩弧線

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
sunghsia



註冊時間: 2003-06-13
文章: 52
來自: 台北

第 1 樓

發表發表於: 星期一 九月 05, 2005 8:21 pm    文章主題: 玩玩弧線 引言回覆

****************************************************************************
*拷備至 *.PRG
****************************************************************************

ouserform=CREATEOBJECT("貝茲曲線")
ouserform.SHOW

DEFINE CLASS 貝茲曲線 AS form
CAPTION=[按住圓點拖著走,點擊視窗離開]
NAME=[Form1]

ADD OBJECT Shape1 AS 表單_Shape WITH ;
LEFT=40,;
TOP=124

ADD OBJECT Shape2 AS 表單_Shape WITH ;
LEFT=186,;
TOP=142

ADD OBJECT Shape3 AS 表單_Shape WITH ;
LEFT=94,;
TOP=32

PROCEDURE DESTROY
= ReleaseDC(hWnd, hDC)
ENDPROC

PROCEDURE CLICK
IF MESSAGEBOX("不在玩玩嗎! 要離開了哦??",4+32+256)=6
CLEAR EVENTS
THIS.RELEASE
ENDIF
ENDPROC

PROCEDURE ACTIVATE
DECLARE INTEGER PolyBezier IN gdi32;
INTEGER hdc,;
STRING @ lppt,;
INTEGER cPoints

DECLARE INTEGER GetFocus IN user32
DECLARE INTEGER GetWindowDC IN user32 INTEGER
DECLARE INTEGER ReleaseDC IN user32 INTEGER , INTEGER


public hWnd , hDC, cPoints , point_moveX , point_moveY
hWnd = GetFocus()
hDC = GetWindowDC (hWnd)

this.drawstyle=2
this.繪圖
READ EVENTS
ENDPROC

PROCEDURE 繪圖
x1= this.shape1.left
y1= this.shape1.top
x2= this.shape2.left
y2= this.shape2.top
x3= this.shape3.left
y3= this.shape3.top

this.cls

this.forecolor=rgb(0,255,128)
this.line(x1+this.shape1.width/2 , y1+this.shape1.height/2 , x3+this.shape3.width/2 , y3+this.shape3.height/2) && 拉桿線
this.line(x3+this.shape3.width/2 , y3+this.shape3.height/2 , x2+this.shape2.width/2 , y2+this.shape2.height/2) && 拉桿線

cPoints = ; &&各圓點的X,Y位置
this.RECT(x1+7) + this.RECT(y1+27) +; && +7 和 +27 是因為 API 沒有加入 hWnd 的標題列高度和左邊框寬度, 所以自行配合曲線和圓點的位置
this.RECT(x3+7) + this.RECT(y3+27) +;
this.RECT(x2+7) + this.RECT(y2+27) +;
this.RECT(x2+7) + this.RECT(y2+27)

this.forecolor=0
= PolyBezier (hDC , @cPoints , 3)
ENDPROC

PROCEDURE RECT
PARAMETER lnValue
#DEFINE m0 256
#DEFINE m1 65536
#DEFINE m2 16777216
LOCAL b0, b1, b2, b3
b3 = Int(lnValue/m2)
b2 = Int((lnValue - b3*m2)/m1)
b1 = Int((lnValue - b3*m2 - b2*m1)/m0)
b0 = Mod(lnValue, m0)
RETURN Chr(b0)+Chr(b1)+Chr(b2)+Chr(b3)
ENDPROC
ENDDEFINE



DEFINE CLASS 表單_Shape AS SHAPE
BORDERCOLOR=8453888
* BORDERWIDTH=3
CURVATURE=90
HEIGHT=8
WIDTH=7
NAME=[Shape]

PROCEDURE MOUSEDOWN
LPARAMETERS nButton, nShift, nXCoord, nYCoord
point_moveX= nXCoord
point_moveY= nYCoord
ENDPROC

PROCEDURE MOUSEMOVE
LPARAMETERS nButton, nShift, nXCoord, nYCoord
if nButton=1
this.left = this.left + (nXCoord - point_moveX)
this.top = this.top + (nYCoord - point_moveY)
point_moveX = nXCoord
point_moveY = nYCoord
thisform.繪圖
endif
ENDPROC

PROCEDURE MOUSEUP
LPARAMETERS nButton, nShift, nXCoord, nYCoord
= PolyBezier (hDC , @cPoints , 4) &&在繪製一次, 因滑鼠放開時,有時曲線會消失
ENDPROC

ENDDEFINE
回頂端
檢視會員個人資料 發送私人訊息
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2160


第 2 樓

發表發表於: 星期一 九月 05, 2005 10:14 pm    文章主題: 引言回覆

再多做幾種功能後,
組合一下,就可做成超強的小畫家了!

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
sunghsia



註冊時間: 2003-06-13
文章: 52
來自: 台北

第 3 樓

發表發表於: 星期一 九月 05, 2005 11:52 pm    文章主題: 引言回覆

哇拷~~~~~~ 資料庫快變成了美術教室了~~ 看來要改行嚕><~
其實~偶而設計一些圖畫來滿足自己的成就感
也是一種不錯的心情,就因為是自己設計出來的感覺;真好
OK! 繼續邁向 AutoCad 的立體圖
回頂端
檢視會員個人資料 發送私人訊息
yoncen



註冊時間: 2005-08-29
文章: 35


第 4 樓

發表發表於: 星期二 九月 06, 2005 9:01 am    文章主題: 引言回覆

看來你可以寫股票程式了。。^_^
_________________
從事企業ERP開發,學會止境,精益求精。
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作