首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

【问】屏幕粉笔,该怎么处理

2012-02-01 
【问】屏幕粉笔小弟近期要参加一个程序设计比赛,自由选材。我想到的是比较实用的 屏幕粉笔工具 的开发,虽说先

【问】屏幕粉笔
小弟近期要参加一个程序设计比赛,自由选材。
我想到的是比较实用的 屏幕粉笔工具 的开发,虽说先网上有好多的这个类型的小工具,可是不是自己的东西不是~~
我只是知道这个跟api有关联、屏幕截图,还有一些详细的我就不知道了...

请各位路过的大侠给点建议和意见哈~~
帮帮忙,不胜感激

[解决办法]
等吃过午饭后,俺下午给你写一个。
[解决办法]
我以前用j2se 写过一个绘图工具,但不是MS里面的全部功能,只现实了一部份功能,而且
兼容性不好,即用自己的绘图工具保存过的文档,只能在自己的绘图工具中打开,其它软件
打不开.
拉伸和翻转功能都没写出来,只写出来个反色功能,透明功能也没写出来:)

到现在为止,我还是不会写上面的几个功能:)
[解决办法]
其实很简单,大体思路是这样:

首先需要一个窗体,和屏幕一样大,然后抓屏(抓全屏,用api实现),将屏幕的图画到窗体上;

然后在窗体上画就行了。
[解决办法]
此外,为防止多个程序实例,建议在main开始处加上:If App.PrevInstance Then Exit Sub
[解决办法]
小胖的问题解决了,牛,还是大家的力量强大啊!
[解决办法]

Assembly code
.686.model flat,stdcalloption casemap:noneincludelib WINDOWS.INCincludelib KERNEL32.INCincludelib USER32.INCinclude masm32.incinclude gdi32.incincludelib KERNEL32.LIBincludelib USER32.LIBincludelib masm32.libincludelib gdi32.libinclude macro.asm; -----------------------------------; INPUT red, green & blue BYTE values; OUTPUT DWORD COLORREF value in eax; -----------------------------------RGB macro red, green, blue ;输入RGB,合成一个32位值放在EAX中   xor eax, eax   mov ah, blue ; blue   mov al, green ; green   rol eax, 16   mov al, red ; redendm.data?   lpMsg MSG <>   TimerID dd ?    iCount dd ?   buffer db 100 dup(?)   hMine dd ? ;找到的NotePad的handle   hdc dd ? ;找到的NotePad的DC的Hand   hFont dd ? ;创建一种字体.codeTimerProc proclocal cfRGB:COLORREFlocal fnText:HGDIOBJ   invoke FindWindow,CTEXT('notepad'),NULL   .if (EAX==0)      invoke wsprintf,offset buffer,CTEXT("%d 没有找到记事本",10,13),iCount      invoke StdOut, offset buffer      inc iCount      ret   .endif   mov hMine,EAX ;保存NotePad的Handler      invoke GetDC,EAX ;取得 DC   mov hdc,EAX      invoke CreateFont,\                  100,\                   40,\                  0,\                  0,\                  FW_BLACK,\                  0,\                  0,\                  0,\                  ANSI_CHARSET,\                  OUT_DEFAULT_PRECIS,\                  CLIP_CHARACTER_PRECIS,\                  DEFAULT_QUALITY,\                  DEFAULT_PITCH or FF_SWISS,\                  CTEXT("宋体")   mov hFont,eax ;保存一下这种字体的handle   invoke SelectObject,hdc,hFont ;将这种字体设置给DC      RGB 200,200,50   invoke SetTextColor,hdc,eax ;准备好笔   RGB 0,0,255   invoke SetBkMode,hdc,eax ;准备好背景      invoke TextOut,hdc,50, 50,CTEXT('很黄很暴力...'),14 ;写字啦      invoke DeleteObject,hFont ;释放字体   invoke ReleaseDC,hMine,hdc ;释放DC   invoke wsprintf,offset buffer,CTEXT("画一下",13,10),NULL   invoke StdOut, offset buffer ret TimerProc endpStart:   invoke SetTimer, NULL, 0, 1000, addr TimerProc ;200ms一次,触发 TimerProc   mov TimerID,eax ;存一下,释放的时候还要用      .WHILE TRUE      invoke GetMessage, ADDR lpMsg,NULL,0,0      .BREAK .IF (!eax)      invoke TranslateMessage, ADDR lpMsg       invoke DispatchMessage, ADDR lpMsg   .ENDW    invoke KillTimer, NULL, TimerID ;释放定时器      ;暂停显示,回车键关闭   invoke StdIn,addr buffer,sizeof buffer   invoke ExitProcess,0end Start 

热点排行