大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> 如何在VB中实现绘图区的大十字光标

如何在VB中实现绘图区的大十字光标

时间: 2021-07-31 作者:daque

偶尔,咱们须要用vb赶快开拓一个考查数据画图处置步调,将画图控件内的鼠标光标改形成与autocad软硬件中运用的大十字光目标情势,将不妨比普遍的箭镞光标到达更好的功效。那么咱们怎样实行如许的大十字光标呢? ---- 开始,咱们精确一下要到达的功效,假如咱们在一个picture控件中画图,那么,鼠标挪动到这个控件上时,鼠标光标登时变换为大十字形势,光标中的横线从控件的左边境到右边境,竖线从控件的上边境到下边境,即大十字光标将画图控件分隔为四个象限。当鼠标挪动到控件外时,光标则又回复成从来的情势。 ---- 要实行如许的光标,得咱们本人经过画线的办法实行。如鼠标在画图控件内,先在鼠目标暂时场所画上光目标横线和竖线;当鼠标场所挪动,先擦除向来的光标横线和竖线,而后再在新的场所画光目标横线和竖线,那么咱们就要相应画图控件的mousemove事变。固然,画图控件内不管有什么实质,咱们擦除光标线和重画光标线时都不许妨害向来的实质,所以咱们要将画图控件的drawmode树立为vbxorpen(异或办法),绘制光目标横线和竖线时,用异或的办法将横线和竖线的音素点脸色设为光目标脸色和向来的音素点颜色的异或值,再用异或的办法在同样的场所绘制一遍竖线和横线,横线和竖线上的音素点再一次和光标脸色举行异或操纵,就擦除去光目标横线和竖线,且又回复了画图控件内向来的实质。 ---- 咱们还得保护鼠标挪动到画图控件内时,普遍的鼠标光标消逝,惟有绘制的大十字光标展示,所以还该当树立画图控件的mousepointer属性为vbcuntom,即用户自设置。画图控件的mousepointer属性树立为vbcustom后,其mouseicon属性中应装入相映的用户自设置图形,由于咱们蓄意画图控件内惟有咱们绘制的光标,而没有其它的光标,故该当装入一个空的(通明的)光标图形。不妨任找一个光标文献,经过大肆一个资源编纂器对其举行编纂,用通明的办法弥补所有光标图形,生存成咱们所需的noicon.cur即可。 ---- 经过之上的要害树立和操纵,咱们就不妨实行大十字光标了。运用异或办法举行画图,咱们还不妨实行普遍画图软硬件中常有的“橡皮筋”功效,即用鼠标设置一个点后,动静拖动鼠标来设置其余一个点,动静拖动鼠标进程中,所要绘的图形也动静相映变革。 ---- 以次咱们经过一个示例来完备实行画图控件中的大十字光标,还演练怎样实行用“橡皮筋”功效来画矩形: ---- 在vb中兴建一个规范exe工程,在form第11中学介入一个picture控件,其name设为picdraw,不妨装入一个图象文献,picdraw的巨细和个中的图象巨细基础上掩盖大局部的form1即可。实行代码如次所示。此步调在vb5.0中运转经过。 option explicitprivate old_x as singleprivate old_y as singleprivate ismousedown as booleanprivate box_x0 as singleprivate box_y0 as singleprivate box_x1 as singleprivate box_y1 as singleprivate pencolor as longprivate crosscolor as longprivate sub form_load()    crosscolor = qbcolor(8)    pencolor = qbcolor(15)    picdraw.drawmode = vbxorpenpicdraw.mouseicon = loadpicture(app.path & "\no.cur")    picdraw.mousepointer = vbcustom    ismousedown = false    box_x0 = box_x1 = box_y0 = box_y1 = 0end subprivate sub picdraw_mousedown(button as integer,shift as integer, x as single, y as single)if ismousedown = true then   解释:先前仍旧用鼠标设置了一个点       box_x1 = x       box_y1 = y       ismousedown = false       picdraw.drawmode = vbcopypen       picdraw.line (box_x0, box_y0)-(box_x1, box_y1),pencolor, b       picdraw.drawmode = vbxorpen       解释:画一个光标   picdraw.line (0, y)-(picdraw.scalewidth, y),crosscolor  picdraw.line (x, 0)-(x, picdraw.scaleheight),crosscolor       old_x = x       old_y = y    else       解释:设置了一个矩形的第一个极点,则擦除光标       picdraw.line (0, y)-(picdraw.scalewidth, y),crosscolor       picdraw.line (x, 0)-(x, picdraw.scaleheight),crosscolor       box_x0 = x       box_y0 = y       ismousedown = true    end ifend subprivate sub picdraw_mousemove(button as integer,shift as integer, x as single, y as single)    if ismousedown = true then       解释:拖动鼠标来设置矩形的其余一个极点,此时擦除前一个矩形,绘制新的矩形       picdraw.line (box_x0, box_y0)-(old_x, old_y),pencolor, b       picdraw.line (box_x0, box_y0)-(x, y), pencolor, b    else       解释:取消旧光标线       picdraw.line (0, old_y)-(picdraw.scalewidth, old_y),crosscolor       picdraw.line (old_x, 0)-(old_x, picdraw.scaleheight),crosscolor       解释:画新的光标线       picdraw.line (0, y)-(picdraw.scalewidth, y),crosscolor       picdraw.line (x, 0)-(x, picdraw.scaleheight),crosscolor    end if    old_x = x    old_y = yend sub

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.