[VB]bitblt画图~~

aqcy111 2011-10-17 01:12:45
我想用bitblt在一个picturebox中画出多条曲线,可是只能显示一条线在画面上,求解决思路~~
...全文
387 20 打赏 收藏 转发到动态 举报
写回复
用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
多条曲线就是多个数组中的数据绘制即可

1,486

社区成员

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

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