青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

聚星亭

吾笨笨且懶散兮 急須改之而奮進(jìn)
posts - 74, comments - 166, trackbacks - 0, articles - 0
  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            大概說(shuō)下思路,方便以后回憶~
            在窗口客戶(hù)區(qū) 繪制一個(gè)圓,圓心為邏輯坐標(biāo)。這樣,它窗體設(shè)備坐標(biāo)的轉(zhuǎn)換關(guān)系如下:

   1. 從設(shè)備坐標(biāo)系(x,y)到邏輯坐標(biāo)系(x',y')
      x' = x - width()/2
      y' = y + height()/2

   2. 從邏輯坐標(biāo)系(x',y')到設(shè)備坐標(biāo)系(x,y)
       x = x' + width()/2
       y = height()/2 - y'

轉(zhuǎn)換成代碼表示如下:
     
 1;//######################################################################
 2;// 功  能: 從邏輯坐標(biāo)系到設(shè)備坐標(biāo)系
 3;// 函數(shù)名: ConvlogicPos2DevicePos
 4;// 參數(shù) 
 5;//       ptLogicPos:  邏輯坐標(biāo)
 6;//       pptDevicePos: 輸出參數(shù) 轉(zhuǎn)換后的設(shè)備坐標(biāo)
 7;//######################################################################
 8ConvlogicPos2DevicePos proc ptLogicPos:POINT, pptDevicePos:ptr POINT
 9    assume esi:ptr POINT
10        mov esi,pptDevicePos
11        mov eax, ptLogicPos.x
12        add eax, g_ptCoor.x
13        mov [esi].x, eax
14        
15        mov eax, g_ptCoor.y
16        sub eax, ptLogicPos.y
17        mov [esi].y, eax
18    assume esi:nothing
19    
20    ret
21ConvlogicPos2DevicePos endp
22
23;//######################################################################
24;// 功  能: 從設(shè)備坐標(biāo)系到邏輯坐標(biāo)系
25;// 函數(shù)名: ConvDevicePos2logicPos
26;// 參數(shù) 
27;//       ptDevicePos: 設(shè)備坐標(biāo)
28;//       pptLogicPos: 輸出參數(shù) 轉(zhuǎn)換后的邏輯坐標(biāo)
29;//######################################################################
30ConvDevicePos2logicPos proc ptDevicePos:POINT, pptLogicPos:ptr POINT
31    assume esi:ptr POINT
32        mov esi, pptLogicPos
33        
34        mov eax, ptDevicePos.x
35        sub eax, g_ptCoor.x
36        mov [esi].x, eax
37    
38        mov eax, ptDevicePos.y
39        add eax, g_ptCoor.y
40        mov [esi].y, eax
41    assume esi:nothing
42    
43    ret
44ConvDevicePos2logicPos endp

      關(guān)于 鐘表指針的繪制就比較簡(jiǎn)單了,用三角函數(shù),根據(jù)分鐘數(shù),秒數(shù),小時(shí)數(shù),可以計(jì)算出相應(yīng)的角度,再乘以半徑就可以得到指定圓的交點(diǎn)坐標(biāo)了,代碼如下:
  1;//#############################################################
  2;// 設(shè)置指針長(zhǎng)度
  3;//#############################################################
  4SetPointLong proc hDC:HDC, dwPointType:DWORD, pptCoor:ptr POINT
  5    LOCAL @dwSize:DWORD
  6    assume esi:ptr POINT
  7        mov    esi,pptCoor
  8        
  9        .if dwPointType == IDT_POINTTYPE_SECOND
 10            mov @dwSize, 25
 11            
 12        .elseif  dwPointType == IDT_POINTTYPE_MIN
 13            mov @dwSize, 35
 14            
 15        .elseif  dwPointType == IDT_POINTTYPE_HOUR
 16            mov @dwSize, 45
 17            
 18        .endif
 19        
 20        mov   eax, g_ptCoor.y
 21        SUB   EAX, @dwSize
 22        mov   [esi].y, eax
 23        
 24        mov   eax, g_ptCoor.x
 25        SUB   EAX, @dwSize
 26        mov   [esi].x, eax
 27    
 28    assume esi:nothing
 29    
 30    ret
 31SetPointLong endp
 32
 33;//######################################################################
 34;// 功  能:繪制鐘表指針
 35;// 函數(shù)名: DrawColckPoint
 36;// 參數(shù) 
 37;//       hWnd: 窗口句柄
 38;//     nColor: 秒針的顏色
 39;//######################################################################
 40DrawColckPoint proc hDC:HDC, dwPointType:DWORD, nColor:DWORD
 41    LOCAL @sysTime:SYSTEMTIME
 42    LOCAL @ptCoor:POINT
 43    LOCAL @hPen:HPEN
 44    LOCAL @halfNum:WORD
 45    LOCAL @nX:DWORD
 46    LOCAL @nY:DWORD
 47    LOCAL @dwRadian:DWORD
 48    LOCAL @dwTmpTime:WORD
 49    LOCAL @dwSecSize:WORD
 50
 51    assume esi:ptr SYSTEMTIME
 52        lea esi,@sysTime
 53        invoke RtlZeroMemory, esi, sizeof @sysTime
 54        invoke GetLocalTime, esi
 55        mov @halfNum, 180
 56        
 57        xor edx, edx
 58        xor eax, eax
 59        mov @hPen, eax
 60        
 61        .if dwPointType == IDT_POINTTYPE_SECOND
 62            invoke CreatePen,PS_SOLID, 1, nColor
 63            MOV @hPen, eax
 64            mov ax, [esi].wSecond;
 65            mov @dwTmpTime, ax
 66            mov @dwSecSize, 6
 67            
 68        .elseif  dwPointType == IDT_POINTTYPE_MIN
 69            invoke CreatePen,PS_SOLID, 2, nColor
 70            MOV @hPen, eax
 71            mov ax, [esi].wMinute;
 72            mov @dwTmpTime, ax
 73            mov @dwSecSize, 6
 74        
 75        .elseif  dwPointType == IDT_POINTTYPE_HOUR
 76            invoke CreatePen,PS_SOLID, 3, nColor
 77            MOV @hPen, eax
 78            mov ax, [esi].wHour;  
 79            mov @dwTmpTime, ax
 80            mov @dwSecSize, 30  
 81        .endif
 82        
 83        invoke SelectObject,hDC, @hPen
 84        
 85        .if dwPointType == IDT_POINTTYPE_HOUR
 86            add @dwTmpTime, 9
 87            .if @dwTmpTime > 12
 88                sub @dwTmpTime, 12
 89            .endif
 90            
 91            mov ax, 12
 92            sub ax, @dwTmpTime
 93            .if ax == 0
 94                mov @dwTmpTime, 12
 95            .else
 96                mov @dwTmpTime, ax
 97            .endif
 98        .else
 99            add @dwTmpTime, 45
100            .if @dwTmpTime > 60
101                sub @dwTmpTime, 60
102            .endif
103            
104            mov ax, 60
105            sub ax, @dwTmpTime
106            .if ax == 0
107                mov @dwTmpTime, 60
108            .else
109                mov @dwTmpTime, ax
110            .endif
111        .endif
112        
113        mov ax, @dwTmpTime
114        mul @dwSecSize
115        mov @dwSecSize, ax;// 相應(yīng)秒數(shù)D 
116    
117        FLDPI 
118        FIDIV @halfNum  ;// 得到 1°角的弧度值
119        FIMUL @dwSecSize  ;// 得到應(yīng)秒數(shù)角的弧度值
120        FSTP @dwRadian ;
121        FLD  @dwRadian
122        
123        FCOS    ;// 得到單位圓的X
124        FSTP  @nX
125        FLD  @dwRadian;// 再保存一次
126        FSIN    ;// 得到單位圓的Y
127        FSTP  @nY
128        
129        invoke SetPointLong, hDC, dwPointType, addr @ptCoor
130        
131        FLD   @nY
132        FIMUL @ptCoor.y
133        FISTP @ptCoor.y
134        
135        FLD   @nX
136        FIMUL @ptCoor.x
137        FISTP @ptCoor.x
138        
139        push  NULL          ;// 不要返回值
140        push  g_ptCoor.y     ;// Y坐標(biāo)
141        push  g_ptCoor.x     ;// X坐標(biāo)
142        push  hDC
143        call MoveToEx       ;// 移動(dòng)到指定位置
144        
145        invoke ConvlogicPos2DevicePos, @ptCoor, addr @ptCoor
146
147        push @ptCoor.y
148        push  @ptCoor.x     ;// X坐標(biāo)
149        push  hDC
150        call  LineTo
151        invoke DeleteObject, @hPen;
152    assume esi:nothing
153    
154    ret
155DrawColckPoint endp

最后就是繪制方面,為了防止閃爍,用了雙緩存,建了個(gè)內(nèi)存DC,代碼如下:
 1OnPaintSub proc  hWnd:HWND
 2    LOCAL @ps:PAINTSTRUCT
 3    LOCAL @hDlgDC:HDC
 4    LOCAL @hMemDC:HDC
 5    LOCAL @hBmp:HBITMAP
 6    LOCAL @hBrush:HBRUSH
 7    LOCAL @tmpBuf:DWORD
 8    
 9        ;// 得到窗口DC
10        invoke BeginPaint, hWnd, addr @ps
11        mov @hDlgDC, eax
12        
13        mov eax, g_Rect.right
14        sub eax, g_Rect.left
15        mov @tmpBuf, eax
16        
17        mov eax, g_Rect.bottom
18        sub eax, g_Rect.top
19        invoke CreateCompatibleBitmap, @hDlgDC, @tmpBuf,eax
20        mov @hBmp, eax
21        
22        invoke CreateCompatibleDC, @hDlgDC
23        mov @hMemDC, eax
24        
25        invoke CreateSolidBrush, 242448h
26        mov @hBrush, eax 
27        
28        invoke SelectObject,@hMemDC, @hBmp
29        invoke SelectObject,@hMemDC, @hBrush
30        
31        invoke FillRect, @hMemDC,addr g_Rect, @hBrush;
32        
33        invoke DrawClockBK, @hMemDC             ;// 繪制鐘表背景
34        invoke ShowTimeText, @hMemDC, IDT_COLOR_TEXT  ;// 繪制文本時(shí)間字符
35        invoke DrawColckPoint, @hMemDC, IDT_POINTTYPE_HOUR, 0
36        invoke DrawColckPoint, @hMemDC, IDT_POINTTYPE_MIN, 0
37        invoke DrawColckPoint, @hMemDC, IDT_POINTTYPE_SECOND, 00000FFh
38        
39        mov eax, g_Rect.bottom
40        sub eax, g_Rect.top
41        invoke BitBlt, @hDlgDC, 00, @tmpBuf, eax, @hMemDC, 00, SRCCOPY
42        
43        invoke DeleteDC, @hMemDC;
44        invoke DeleteObject, @hBrush;
45        invoke DeleteObject, @hBmp;
46        invoke EndPaint, hWnd, addr @ps;
47    
48    ret
49OnPaintSub endp

            最后貼下效果圖:
                  

            恩,就這么多了,下面給出完整代碼。
源碼下載地址         /Files/besterChen/besTimer/besTimer.rar

Feedback

# re: 老師布置的作業(yè):讓寫(xiě)一個(gè)電子鐘,發(fā)上來(lái)留個(gè)紀(jì)念  回復(fù)  更多評(píng)論   

2010-07-28 08:06 by heguo
高人

# re: 老師布置的作業(yè):讓寫(xiě)一個(gè)電子鐘,發(fā)上來(lái)留個(gè)紀(jì)念  回復(fù)  更多評(píng)論   

2010-07-28 08:28 by ccsdu2009
啥語(yǔ)言的?

# re: 老師布置的作業(yè):讓寫(xiě)一個(gè)電子鐘,發(fā)上來(lái)留個(gè)紀(jì)念  回復(fù)  更多評(píng)論   

2010-07-28 09:31 by Husiwa
DELPHI

# re: 老師布置的作業(yè):讓寫(xiě)一個(gè)電子鐘,發(fā)上來(lái)留個(gè)紀(jì)念[未登錄](méi)  回復(fù)  更多評(píng)論   

2010-07-28 10:00 by ZUHD
這是Delphi??
這分明是pascal嘛。。。。。。

樓主還是學(xué)生,我曾在看雪里拜讀過(guò)你的文章

# re: 老師布置的作業(yè):讓寫(xiě)一個(gè)電子鐘,發(fā)上來(lái)留個(gè)紀(jì)念  回復(fù)  更多評(píng)論   

2010-07-28 10:35 by yafare
pascal,漢……

不過(guò)MASM那堆語(yǔ)法也跟高級(jí)語(yǔ)言差不多了

# re: 老師布置的作業(yè):讓寫(xiě)一個(gè)電子鐘,發(fā)上來(lái)留個(gè)紀(jì)念[未登錄](méi)  回復(fù)  更多評(píng)論   

2010-07-28 17:10 by besterchen
@ZUHD
(*^__^*) 嘻嘻……,那些東西就別提了,上不了臺(tái)面的……

# re: 老師布置的作業(yè):讓寫(xiě)一個(gè)電子鐘,發(fā)上來(lái)留個(gè)紀(jì)念  回復(fù)  更多評(píng)論   

2010-07-28 17:25 by nehCretseB
這個(gè)明明是 VB 嘛...

唉. 現(xiàn)在的人眼神越來(lái)越差了~!

# re: 老師布置的作業(yè):讓寫(xiě)一個(gè)電子鐘,發(fā)上來(lái)留個(gè)紀(jì)念  回復(fù)  更多評(píng)論   

2010-08-05 14:47 by 吳冬亮
看到匯編指令 我很糾結(jié)

# re: 老師布置的作業(yè):讓寫(xiě)一個(gè)電子鐘,發(fā)上來(lái)留個(gè)紀(jì)念  回復(fù)  更多評(píng)論   

2010-08-08 09:06 by foxtail
匯編現(xiàn)在還有應(yīng)用領(lǐng)域嗎 搞不懂

# re: 老師布置的作業(yè):讓寫(xiě)一個(gè)電子鐘,發(fā)上來(lái)留個(gè)紀(jì)念  回復(fù)  更多評(píng)論   

2010-08-11 16:44 by nero
@nehCretseB
是VB?笑掉大牙!

# re: 老師布置的作業(yè):讓寫(xiě)一個(gè)電子鐘,發(fā)上來(lái)留個(gè)紀(jì)念  回復(fù)  更多評(píng)論   

2010-09-15 11:23 by SIsIA
這好像是易語(yǔ)言的吧?

# re: 老師布置的作業(yè):讓寫(xiě)一個(gè)電子鐘,發(fā)上來(lái)留個(gè)紀(jì)念[未登錄](méi)  回復(fù)  更多評(píng)論   

2012-04-08 17:13 by a
應(yīng)該是WIN32匯編寫(xiě)的吧,我下了金山衛(wèi)士會(huì)報(bào)毒。
不過(guò)我想應(yīng)該是誤報(bào)。不知道是不是
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧洲日本专区| 久久精品视频免费观看| 亚洲摸下面视频| 亚洲人成欧美中文字幕| 亚洲精品精选| 一区二区三区国产在线观看| 国产精品99久久不卡二区| 亚洲一区精彩视频| 久久国产精品99国产精| 麻豆国产va免费精品高清在线| 久久综合给合| 最新亚洲一区| 一区二区三区高清不卡| 亚洲制服丝袜在线| 久久人人爽人人| 欧美日韩三区| 国产日韩欧美在线看| 91久久综合| 欧美伊人精品成人久久综合97| 久久综合色影院| 亚洲精品乱码久久久久久蜜桃91| 亚洲一二三区精品| 在线看欧美日韩| 欧美日韩免费在线视频| 欧美久久电影| 一区在线观看视频| 性欧美xxxx视频在线观看| 欧美大片在线看| 亚洲欧美在线磁力| 欧美黑人在线播放| 国产专区欧美专区| 亚洲一区国产| 中国成人亚色综合网站| 欧美成人精品一区二区三区| 国产精品天美传媒入口| 99国内精品| 日韩亚洲在线| 欧美色道久久88综合亚洲精品| 亚洲第一天堂无码专区| 麻豆精品视频在线观看视频| 性欧美videos另类喷潮| 国产麻豆综合| 欧美在线你懂的| 久久精品99国产精品| 一区二区三区中文在线观看| 免费看亚洲片| 欧美另类高清视频在线| 中文国产成人精品| 午夜一级在线看亚洲| 狠狠色狠色综合曰曰| 欧美成人视屏| 国产精品二区影院| 久久久噜噜噜久久久| 毛片av中文字幕一区二区| 亚洲精品视频在线| 亚洲自拍都市欧美小说| 在线国产欧美| 亚洲最新在线| 亚洲性av在线| 亚洲国产精品成人一区二区| 亚洲精品欧美一区二区三区| 国产乱码精品一区二区三区五月婷 | 黄色精品一区二区| 亚洲一区二区免费| 欧美96在线丨欧| 国产精品国产三级国产aⅴ9色| 亚洲第一在线视频| 亚洲一二三四久久| 亚洲免费观看在线观看| 欧美中文字幕视频| 先锋a资源在线看亚洲| 性色av一区二区三区| 亚洲免费一级电影| 亚洲国产精品高清久久久| 亚洲一区二区四区| 亚洲乱码一区二区| 女人色偷偷aa久久天堂| 欧美国产日韩精品| 亚洲日本va在线观看| 欧美xx视频| 一区二区日韩免费看| 午夜亚洲激情| 狠狠久久亚洲欧美| 久久精品视频播放| 亚洲第一伊人| 亚洲伊人网站| 国语自产精品视频在线看一大j8| 久久久久99精品国产片| 欧美激情国产日韩| 欧美永久精品| 91久久久在线| 羞羞视频在线观看欧美| 永久免费毛片在线播放不卡| 欧美成人伊人久久综合网| 宅男精品视频| 欧美黄色一区二区| 欧美一级专区免费大片| 91久久久久久国产精品| 欧美午夜精品久久久久久孕妇| 亚洲私人影吧| 亚洲欧洲日韩在线| 久久综合给合久久狠狠狠97色69| 日韩天堂在线观看| 很黄很黄激情成人| 国产亚洲精品bt天堂精选| 欧美—级高清免费播放| 欧美亚洲免费电影| 亚洲午夜精品国产| 日韩视频免费看| 亚洲精品国产欧美| 欧美成人精品激情在线观看| 久久久精品视频成人| 欧美一区二区成人| 羞羞视频在线观看欧美| 香蕉成人久久| 久久se精品一区精品二区| 一道本一区二区| 亚洲天堂成人在线观看| 国内精品一区二区| 一区二区三区在线视频播放 | 欧美日韩卡一卡二| 欧美一区二区三区精品 | 午夜精品在线看| 亚洲视频专区在线| 亚洲永久在线| 久久综合网hezyo| 国产日韩欧美日韩| 伊人久久大香线| 亚洲精品在线免费观看视频| 99热这里只有成人精品国产| 亚洲视频欧美视频| 久久免费高清视频| 亚洲黄色视屏| 亚洲欧美在线免费| 欧美韩日一区二区三区| 国产精品日韩精品欧美在线 | 久久人人97超碰国产公开结果| 欧美在线观看一区二区| 欧美国产成人精品| 国产一区二区三区精品久久久| 亚洲国产欧美另类丝袜| 亚洲欧美日韩区| 91久久久在线| 久久男人资源视频| 国产婷婷精品| 午夜精品久久久久久99热软件| 欧美激情一区二区三区高清视频| 午夜日韩激情| 国产精品v日韩精品| 日韩一本二本av| 亚洲第一在线综合网站| 久久精品在线| 欲香欲色天天天综合和网| 久久久精品2019中文字幕神马| 亚洲天堂av在线免费观看| 欧美日本二区| 中文精品在线| 亚洲免费视频一区二区| 国产美女精品人人做人人爽| 亚洲永久网站| 久久成人精品视频| 亚洲经典一区| 夜久久久久久| 国产亚洲视频在线观看| 麻豆精品视频在线观看视频| 欧美成人在线免费视频| 99国产一区| 欧美在线在线| 久久av一区二区| 亚洲黄色在线看| 亚洲无线观看| 亚洲国产一区二区a毛片| 亚洲精品日韩在线| 国产一区二区三区电影在线观看| 欧美国产精品人人做人人爱| 欧美另类69精品久久久久9999| 香蕉乱码成人久久天堂爱免费| 久久成人国产精品| 欧美一级片久久久久久久| 久久久人成影片一区二区三区观看| 亚洲第一中文字幕在线观看| 亚洲视频狠狠| 亚洲美女色禁图| 久久久另类综合| 久久精品国产亚洲a| 国产精品美女久久福利网站| 亚洲国产精品一区二区www| 国内精品视频在线播放| 亚洲欧美国产精品专区久久| 一区二区三区视频免费在线观看| 久久精品国产清自在天天线| 午夜影院日韩| 国产精品一国产精品k频道56| 亚洲精品视频在线| 99pao成人国产永久免费视频| 欧美国产日韩亚洲一区| 亚洲国产激情| 亚洲精品影院在线观看| 欧美va亚洲va国产综合| 亚洲精品日韩在线观看|