第一范文网 - 专业文章范例文档资料分享平台

pb+api实际应用

来源:用户分享 时间:2025/8/1 0:46:19 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

type devmode from structure string dmdevicename integer dmspecversion integer dmdriverversion integer dmsize

integer dmdriverextra long dmfields

integer dmorientation integer dmpapersize integer dmpaperlength integer dmpaperwidth integer dmscale integer dmcopies

integer dmdefaultsource integer dmprintquantity integer dmcolor integer dmduplex

integer dmyresolution integer dmttoption integer dmcollate string dmformname

integer dmunusedpadding long dmbitsperpel long dmpelswidth long dmpelsheight long dmdisplayflags

long dmdisplayfrequency end type

定义外部函数引用声明:

Function long EnumDisplaySettings (long lpszDeviceName, long iModeNum , lpDevMode As DevMode) Library \\

Function long ChangeDisplaySettings (DevMode lpDevMode , long dwflags) Library \

Function long ExitWindowsEx (long uFlags , long dwReserved ) Library \定义实例变量:

Constant long EWX_REBOOT = 2// 注释: 重开机 Constant long CCDEVICENAME = 32 Constant long CCFORMNAME = 32

Constant long DM_BITSPERPEL = 262144

Constant long DISP_CHANGE_SUCCESSFUL = 0 Constant long DISP_CHANGE_RESTART = 1 Constant long CDS_UPDATEREGISTRY = 1

DevMode DevM 实现代码:

w_example窗口的命令按钮cb_1.clicked: boolean a long i long b long ans

a = EnumDisplaySettings(0, 0, DevM) //注释:Initial Setting DevM.dmBitsPerPel = 8 //注释:设定成256色 DevM.dmFields = DM_BITSPERPEL

b = ChangeDisplaySettings(DevM, 0) If b = DISP_CHANGE_RESTART Then

ans = messagebox(\提示\要重开机设定才能完成,重开?\question!,yesno!)

If ans = 1 Then

b = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)

ExitWindowsEx(EWX_REBOOT, 0)//这个api函数只能在win98上使用,win nt以上须采用别的方法 End If Else

If b <> DISP_CHANGE_SUCCESSFUL Then Messagebox(\提示\设定有误\ End If End If

29、彩色BMP档转成灰度

将RGB想成3D之X,Y,Z轴,则BMP的RGB为(r,g,b)与座标(Y,Y,Y)距离最小时的Y即为灰度值

Y = 0.29900 * R + 0.58700 * G + 0.11400 * B

整数化

Y = ( 9798*R + 19235*G + 3735*B) / 32768 RGB(Y, Y, Y)就可以了 实现步骤:

外部函数引用声明:

Funcation long GetPixel (long hdc , long x , long Y) Library \Funcation long SetPixelV (long hdc , long x , long Y , long crColor ) Library \

Funcation long GetDC(long handle) library \定义实例变量: picture tmpPic

窗口w_example的open事件:

P_1.setredraw(false)// 注释:设定所有Pixel的改变不立即在pictureBox上显示

tmpPic = Picture1.Picture

窗口w_example的cb_1.clicked: long width5, heigh5, rgb5 long hdc5, i , j

long bBlue, bRed, bGreen long y

width5 = unitstopixels(P_1.Width,xunitstopixels!) heigh5 =unitstopixels(P_1.height,yunitstopixels!) hdc5 = getdc(handle(this) For i = 1 To width5 For j = 1 To heigh5

rgb5 = GetPixel(hdc5, i, j) bBlue = Blue(rgb5) bRed = Red(rgb5)

bGreen = Green(rgb5)

Y = (9798 * bRed + 19235 * bGreen + 3735 * bBlue) \\ 32768 rgb5 = RGB(Y, Y, Y)

SetPixelV (hdc5, i, j, rgb5) Next Next

P_1.setredraw(true)// 注释:此时才真正显示Picture End Sub

w_example窗口级函数:

Function long Red(long mlColor )

return wf_and(mlColor,255)//对mlcolor进行位与计算 Function long Green(long mlColor ) return wf_and((mlColor/256) ,255) Function long Blue(long mlColor)

return wf_and ((mlColor /65536) ,255)

30、如何将的游标显示成动画游标

动画在 Windows 底下是 .ani 格式的档案, 要显示此类游标,首先要利用LoadCursorFromFile API 载入.ani 档案, 然或利用 SetSystemCursor API 加以显示。 实现步骤: 定义实例变量

Constant long OCR_NORMAL = 32512 Constant long IDC_ARROW = 32512 外部函数引用声明

Function long LoadCursorFromFile (string lpFileName ) Library \

Function long LoadCursor (ref long hInstance , long lpCursorName) Library \//注释: modified

Function long SetSystemCursor (long hcur , long id ) Library \实现代码: long hCursor

hCursor = LoadCursorFromFile(\欲显示的 .ani 或 .cur 档案名称\SetSystemCursor(hCursor, OCR_NORMAL)

//若要将鼠标游标还原原状, 则是执行以下叙述: long ll_temp ll_temp=0

hCursor = LoadCursor(0, IDC_ARROW) SetSystemCursor(hCursor, OCR_NORMAL)

搜索更多关于: pb+api实际应用 的文档
pb+api实际应用.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1l8cy0z3gv9x6b743109_9.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top