社区
API
帖子详情
[VB]bitblt画图~~
aqcy111
2011-10-17 01:12:45
我想用bitblt在一个picturebox中画出多条曲线,可是只能显示一条线在画面上,求解决思路~~
...全文
387
20
打赏
收藏
[VB]bitblt画图~~
我想用bitblt在一个picturebox中画出多条曲线,可是只能显示一条线在画面上,求解决思路~~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
aqcy111
2011-10-27
打赏
举报
回复
[Quote=引用 18 楼 worldy 的回复:]
引用 16 楼 aqcy111 的回复:
试过了,只要在内存里lineto操作,然后从内存里bitblt到picturebox,颜色属性就不起作用
那肯定是你没有使用selectobject,将笔选到内存设备缓冲区
[/Quote]
真心选了....
worldy
2011-10-27
打赏
举报
回复
[Quote=引用 19 楼 aqcy111 的回复:]
引用 18 楼 worldy 的回复:
引用 16 楼 aqcy111 的回复:
试过了,只要在内存里lineto操作,然后从内存里bitblt到picturebox,颜色属性就不起作用
那肯定是你没有使用selectobject,将笔选到内存设备缓冲区
真心选了....
[/Quote]
代码贴出来看看吧
worldy
2011-10-26
打赏
举报
回复
[Quote=引用 16 楼 aqcy111 的回复:]
试过了,只要在内存里lineto操作,然后从内存里bitblt到picturebox,颜色属性就不起作用
[/Quote]
那肯定是你没有使用selectobject,将笔选到内存设备缓冲区
现在还是人类
2011-10-26
打赏
举报
回复
最根本的方法就是数据运算,用 GetBitmapBits 取得数据,后面的就自己计算,再用 SetBitmapBits 把算好的数据放回去,这样什么效果都可以做,从点阵、矢量、三维都可以实现,但关键在于你的图形理论和数学知识是否达到要求。
aqcy111
2011-10-25
打赏
举报
回复
继续....
我通过movetoex,lineto在内存画线后,用bitblt复制到picturebox上,因为要bitblt多条曲线,所以想给不同的曲线使用不同的颜色.我用createpen创建画笔的办法,发现只能改变画笔的线型和粗细,颜色改变不了啊...
求大神指导~~
aqcy111
2011-10-25
打赏
举报
回复
试过了,只要在内存里lineto操作,然后从内存里bitblt到picturebox,颜色属性就不起作用
worldy
2011-10-25
打赏
举报
回复
Public Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
可以指定笔的颜色
smalle
2011-10-19
打赏
举报
回复
1.绘图代码不要放到paint事件中执行
2.把picturebox的autoredraw设置为true
aqcy111
2011-10-19
打赏
举报
回复
就是bitblt()弄了十几个啊...10个以下的时候好像不存在画一会变慢的情况
贝隆
2011-10-19
打赏
举报
回复
[Quote=引用 10 楼 aqcy111 的回复:]
谢谢楼上几位的指点,现在已经用bitblt的方法画出多条线了,但是海存在一个问题,比如说我同时画10条,20条线,刚开始时画线速度正常,一段时间后就会发现画线速度变慢了,是设置的内存不够大?
不知道这个问题该怎么解决了...
[/Quote]
按道理不会,是不是你的代码有问题?
aqcy111
2011-10-19
打赏
举报
回复
谢谢楼上几位的指点,现在已经用bitblt的方法画出多条线了,但是海存在一个问题,比如说我同时画10条,20条线,刚开始时画线速度正常,一段时间后就会发现画线速度变慢了,是设置的内存不够大?
不知道这个问题该怎么解决了...
worldy
2011-10-18
打赏
举报
回复
在picturebox中画多天曲线并不需要使用BitBlt,除非你想使用绘图缓冲
你可以直接在picturebox中绘画即可
贝隆
2011-10-18
打赏
举报
回复
[Quote=引用 3 楼 aqcy111 的回复:]
1楼的资源我看了,只能绘制一条线
就想2楼说的,画了后面的就覆盖了前面的
[/Quote]
能绘制一条,就能绘制两条,你不知道按照那个例子加上一条?
aqcy111
2011-10-18
打赏
举报
回复
1楼的资源我看了,只能绘制一条线
就想2楼说的,画了后面的就覆盖了前面的
smalle
2011-10-18
打赏
举报
回复
搞错了。
2.如果你想用bitblt画的话,把背景设为白色,bitblt最后一个参数设为&H8800C6
即SRCAND
smalle
2011-10-18
打赏
举报
回复
1.曲线都是用多条直线模拟的,直接用line画即可
2.如果你想用bitblt画的话,把背景设为白色,bitblt最后一个参数设为&H660046
贝隆
2011-10-18
打赏
举报
回复
兄弟,要活学活用
你一次性的在内存中绘制好,在BitBlt过来,怎么会覆盖?
aqcy111
2011-10-18
打赏
举报
回复
[Quote=引用 4 楼 veron_04 的回复:]
引用 3 楼 aqcy111 的回复:
1楼的资源我看了,只能绘制一条线
就想2楼说的,画了后面的就覆盖了前面的
能绘制一条,就能绘制两条,你不知道按照那个例子加上一条?
[/Quote]
加上后会出现后画的把先画的覆盖掉的情况
熊孩子开学喽
2011-10-17
打赏
举报
回复
bitblt是贴图用的, 不是用来画线的.
你贴了后面的当然就覆盖了前面的.
除非你用transparentblt透明贴图才行.
贝隆
2011-10-17
打赏
举报
回复
参阅这个:
http://download.csdn.net/detail/veron_04/2368159
多条曲线就是多个数组中的数据绘制即可
VB
使用API在内存中绘制曲线再显示到图片框上
VB
使用API在内存中绘制曲线再显示到图片框上,CPU资源消耗小,效率高,比Line方法快5倍! 1、在内存中创建绘图设备场景 2、设置内存设备场景属性 3、在内存设备场景上绘制曲线 4、通过
Bit
Blt
将内存设备场景覆盖到图片框 5、通过Timer循环执行,形成动态曲线
VB
与API学习笔记(6)绘图DC
DC操作同窗体一样,取得DC句柄,即hDC.也是Long型 一个窗体对应一个DC,没有DC的窗体(控件也叫窗体),可以根据它的句柄来创建一个DC(上升到对象概念)。 DC在内存中是很占资源的,所以没有必要时,要进行释放它。 DC与windowDC是不同上,windowDC包含最上面的非工作区(一般由系统控制),如上面的图。各自绘图的区域就限制了。 看一个例子:先看图: 是有点奇怪
Bit
Blt
介绍
设备上下文
画图
有非常多种方法。比如通过创建位图画刷,利用其填充一个区域来实现图像的绘制。此外,还能够使用CDC类的位图函数来输出位图到设备上下文中。
Bit
Blt
用于从原设备中复制位图到目标设备,语法格式例如以下: BOOL
Bit
Blt
(int x,int y,int nWidth,int nHeight,CDC*pSrcDC,int xSrc,int ySrc,DWORDdwR...
vb
让图片平铺到PictureBox控件里,这里提供2种方法
方法一:Private Sub Form_Click()
Dim 高数量 As Long, 宽数量 As Long
Dim X As Long, Y As Long
Picture2.BorderStyle = 0
Picture2.Picture = LoadPicture( "C:/1.BMP ")
VB
的Autoredraw、refresh等等功能分析汇总及“内存作图”
vb
的(图片框等控件的)autoredraw、refresh、cls等等属性和方法,与(图片框等控件的)picture属性、image属性之间,以及与
vb
一般的图形方法及api绘图函数等等之间,存在比较复杂的关系。通过学习了各种资料和演示程序,基本上搞清楚了。结论如下所示(不涉及更深层的机制)。请大家指正。 首先,有三种相关的“图形”概念:1.屏幕(窗体、图片框等等,甚至电脑桌面)上面显示
API
1,486
社区成员
23,279
社区内容
发帖
与我相关
我的任务
API
VB API
复制链接
扫一扫
分享
社区描述
VB API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章