VB做仿真遇到的一个问题(线条颜色去除)

zyzy577048814 2014-05-06 11:04:29
我做一个仿真,就是线条在图片控件上不断地运动,线条颜色是黄色的,图片空间背景是五颜六色的(就是颜色不均匀,这个会直接否定下面一种解决方法,向下看)。线条运动后他运动前面的地方都变成了线条的颜色,我想把这些走过的线条轨迹颜色去除变成原来的背景颜色。请问如何实现,不知道我说的清楚不。
网上有几种解决方案1、用picture.cls这种方案明显不行,整个图片框里所有颜色都没有了,我想留下当前的线条颜色去除以前走过的。所以此法不行。
2、线条走过后,前面一个线条用重新画一条线颜色设置为背景颜色。此法也不行,因为我背景颜色不单一,直接写的话没法写。
3我目前想到一个用timer控件,但是不知道怎么做。不知道大婶们有什么想法。
这个例子有点像用VB仿真做一个闹钟,如果没有理解我说的什么,想想闹钟针头走的形式应该知道了。
...全文
172 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2014-05-07
  • 打赏
  • 举报
回复
将背景先保存在一个StdPicture变量中,然后根据坐标局部重绘,这样就避免了你说的单一背景色的问题。
of123 2014-05-07
  • 打赏
  • 举报
回复
用 2 个 PictureBox。一个用于背景,另一个用作前景,用于实际显示。 显示线条时,先将背景 PictureBox 内容复制到前景控件中,然后画线条。 Picture1.SetFocus Picture2.AutoRedraw = True rv = SendMessage(Picture1.hwnd, WM_PAINT, Picture2.hDC, 0) Picture2.Picture = Picture2.Image
赵4老师 2014-05-07
  • 打赏
  • 举报
回复
SavePicture 语句 从对象或控件(如果有一个与其相关)的 Picture 或 Image 属性中将图形保存到文件中。 语法 SavePicture picture, stringexpression SavePicture 语句的语法包含下面部分: 参数 描述 picture 产生图形文件的 PictureBox 控件或 Image 控件。 stringexpression 欲保存的图形文件名。 说明 无论在设计时还是运行时图形从文件加载到对象的 Picture 属性,而且它是位图、图标、元文件或增强元文件,则图形将以原始文件同样的格式保存。如果它是 GIF 或 JPEG 文件,则将保存为位图文件。 Image 属性中的图形总是以位图的格式保存而不管其原始格式。 PaintPicture 方法 用以在 Form, PictureBox 或 Printer 上绘制图形文件(.bmp、.wmf、.emf、.cur、.ico或 .dib)的内容。不支持命名参数。 语法 object.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode PaintPicture 方法的语法包含下列部分: 部分 描述 object 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,带有焦点的 Form 对象缺省为 object。 Picture 必需的。要绘制到 object 上的图形源。Form 或 PictureBox 必须是 Picture 属性。 x1, y1 必需的。均为单精度值,指定在 object 上绘制 picture 的目标坐标(x-轴和y-轴)。object 的 ScaleMode 属性决定使用的度量单位。 Width1 可选的。单精度值,指示 picture 的目标宽度。object 的 ScaleMode 属性决定使用的度量单位。如果目标宽度比源宽度 (width2) 大或小,将适当地拉伸或压缩 picture。如果该参数省略,则使用源宽度。 Height1 可选的。 单精度值,指示 picture 的目标高度。object 的 ScaleMode 属性决定使用的度量单位。如果目标高度比源高度 (height2) 大或小,将适当地拉伸或压缩 picture。如果该参数省略,则使用源高度。 x2, y2 可选的。均为单精度值,指示 picture 内剪贴区的坐标(x-轴和y-轴)。object 的 ScaleMode 属性决定使用的度量单位。如果该参数省略,则缺省为 0。 Width2 可选的。单精度值,指示 picture 内剪贴区的源宽度。object 的 ScaleMode 属性决定使用的度量单位。如果该参数省略,则使用整个源宽度。 Height2 可选的。 单精度值,指示 picture 内剪贴区的源高度。object 的 ScaleMode 属性决定使用的度量单位。如果该参数省略,则使用整个源高度。 Opcode 可选的。是长型值或仅由位图使用的代码。它用来定义在将 pictur 绘制到 object 上时对 picture 执行的位操作(例如, vbMergeCopy 或 vbSrcAnd 操作符)。关于位操作符常数的完整列表,请参阅 Visual Basic Help 文件中的 RasterOp Constants 主题。 在使用opcode时有一些限制。例如,如果资源是图标或图元文件,则只能使用 vbSrcCopy,而不能使用其他的opcode;并且,与图案 (或 SDK 术语中的"画笔"),如 MERGECOPY、 PATCOPY、 PATPAINT 和 PATINVERT,相交互的opcode实际上是同目标的 FillStyle 属性交互。 注意 Opcode 用于将按位操作传递到位图。当传递其他图象类型时将一个值给该参数会造成“无效过程调用或参数”错误。这是设计的原因。要避免这个错误,对于除位图外的图象,将 Opcode 参数置为空。 说明 通过使用负的目标高度值 (height1) 和 / 或目标宽度值 (width1) ,可以水平或垂直翻转位图。 可以省略任何多个可选的尾部的参数 。如果省略了一个或多个可选尾部参数,则不能在指定的最后一个参数后面使用逗号。如果想指定某个可选参数,则必须先指定语法中出现在该参数前面的全部参数。 注意,在将一个.Bmp加载入 PictureBox 控件和使用 Windows API 函数 BitBlt() 添加图片之间有一点不同。当您对一个图象使用 BitBlt() 时,PictureBox 控件不知道象您使用 LoadPicture方法那样去调整大小。将 ScaleWidth 和 ScaleHeight 属性设置为图象的大小也不起作用。如果您想在使用 BitBlt 之后用 PictureBox 调整新图片的大小,必须用代码手工做,转换单位并处理边框,下面是如何这样做的一个简单示例: Sub ResizePictureBoxToImage(pic as PictureBox, twipWd _ as Integer, twipHt as Integer) ' 该代码假设所有的单位都为缇。如果 ' 不是,必须在调用该例程之前,转换为缇。 ' 这里也假设图象显示在0,0处。 Dim BorderHt as Integer, BorderWd as Integer BorderWd = Pic.Width - Pic.ScaleWidth BorderHt = Pic.Height - Pic.ScaleHeight pic.Move pic.Left, pic.Top, twipWd + BorderWd, _ twipHt + BorderHt End Sub LoadPicture 函数 将图形载入到窗体的 Picture 属性、PictureBox 控件或 Image 控件。 语法 LoadPicture([filename], [size], [colordepth],[x,y]) LoadPicture 函数语法有下列部分: 部分 描述 filename 可选的。字符串表达式指定一个文件名。可以包括文件夹和驱动器。如果未指定文件名,LoadPicture 清除图象或 PictureBox 控件。 size 可选变体。如果 filename 是光标或图标文件,指定想要的图象大小。 colordepth 可选变体。如果 filename 是一个光标或图标文件,指定想要的颜色深度。 x 可选变体,如果使用 y ,则必须使用。如果 filename 是一个光标或图标文件,指定想要的宽度。在包含多个独立图象的文件中,如果那样大小的图象不能得到时,则使用可能的最好匹配。只有当 colordepth 设为 vbLPCustom 时,才使用X 和 Y值。For icon files 255 is the maximum possible value y 可选变体,如果使用 x, 则必须使用。如果 filename 是一个光标或图标文件,指定想要的高度。在包含多个独立图象的文件中,如果那样大小的图象不能得到时,则使用可能的最好匹配。For icon files 255 is the maximum possible value 设置值 size 的设置值为: 常量 值 描述 vbLPSmall 0 系统小图标。 vbLPLarge 1 系统大图标,由视频驱动程序决定。 vbLPSmallShell 2 外壳小图标大小,由“控制面板”中的 Display Properties 对话框中 Appearance 选项卡上的 Caption Buttons 的大小设置决定。 vbLPLargeShell 3 外壳大图标大小,由“控制面板”中的 Display Properties 对话框中 Appearance 选项卡上的图标大小设置决定。 vbLPCustom 4 自定义大小,由 x 和 y 参数提供值。 colordepth 的设置值为: 常量 值 描述 vbLPDefault 0 如果使用指定文件,则为最佳可用匹配。 vbLPMonochrome 1 2 色。 vbLPVGAColor 2 16 色。 vbLPColor 3 256 色。 说明 Visual Basic 可以识别的图形格式有:位图 (.bmp) 文件、图标 (.ico) 文件、光标 (.cur) 文件,行程编码 (.rle) 文件、元 (.wmf) 文件、增强的元文件 (.emf), GIF(.gif) 文件以及 JPEG (.jpg) 文件。 赋值不带参数的 LoadPicture 将清除窗体、图片框及图象控件中的图形。 为了加载在 PictureBox 控件和 Image 控件中显示的图形或加载作为窗体背景的图形,必须将 LoadPicture 的返回值赋给要显示该图片的对象的 Picture 属性。例如: Set Picture = LoadPicture("PARTY.BMP") Set Picture1.Picture = LoadPicture("PARTY.BMP") 如果要将图标赋予窗体,则要把 LoadPicture 函数的返回值赋给 Form 对象的 Icon 属性: Set Form1.Icon = LoadPicture("MYICON.ICO") 图标也可以被赋予除 Timer 控件和 Menu 控件外的其它控件的 DragIcon 属性,例如: Set Command1.DragIcon = LoadPicture("MYICON.ICO") 使用 LoadPicture 可将图形文件载入到系统剪贴板,如下所示: Clipboard.SetData LoadPicture("PARTY.BMP")

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧