【资源·自创】BasicPtr发布|在vb.net平台上实现指针
vb2010吧
全部回复
仅看楼主
level 13
百百mp3 楼主
由于vb.net原本就没有加入指针,这是因为指针在程序员看来都是危险的(MSDN上关于指针的介绍和使用的文章也很少),不是说不能使用,所以我把指针封装起来了(由于本人初学指针,目的为了处理图片像素高效,所以封装的指针类型为byte)。下面我就用图片处理的代码告诉大家怎么用吧。
下载地址:pan.baidu.com/share/link?shareid=179624&uk=1611074338&third=0
2012年12月21日 12点12分 1
level 13
我一直在疑惑指针到底是什么
2012年12月21日 13点12分 2
额,指针与内存交互频繁(所以处理东西快),所以才说是危险的...所以,指针与内存息息相关...
2012年12月21日 13点12分
简单来说就是一个畸形数组...
2012年12月21日 13点12分
level 13
百百mp3 楼主
创建一个WinForm项目,在窗体上布置加载(but_load)和反相(but_event)按钮和图片框(picbox),首先引用Dll,选择上面地址的DLL:
but_load_Click事件写上加载图片语句,然后打开but_event_Click事件,写上:
Dim bm As Bitmap = picbox.Image
'创建图片副本
Dim bmData = bm.LockBits(New Rectangle(New Point, New Size(bm.Width, bm.Height)), ImageLockMode.ReadWrite, PixelFormat.Format24
bp
pRgb)
'将图片以每个像素24位RGB方式并以可读可写方式锁定在内存
Dim bptr As New BasicPtr.Pointer(bmData.Scan0)
'使用指针类
Dim count = bm.Width * bm.Height
'计算所有像素
For i = 0 To count
'遍历像素
bptr.Set(New Byte() {CByte(255 - bptr.Read(0))})
'读取和替换像素
'推进8位字节,即遍历顺序:(色彩n)(n代表第几个像素)
'红1-绿1-蓝1-红2-绿2-蓝2-红3-绿3-蓝3...
'由于反相每个像素都需要(255-n),所以我们遍历8位字节替换搞定它...
bptr.Add()
'推进8位字节
Next
bm.UnlockBits(bmData)
'必须解锁才能调用
picbox.Image = bm
'更新显示的图片
测试:
你会发现有三分之二的像素没有变化,这是指针弄人的地方,我们只需把遍历的像素翻2倍即可:
Dim count = bm.Width * bm.Height * 3
没错了吧:
2012年12月21日 13点12分 3
没错
2012年12月21日 13点12分
level 13
百百mp3 楼主
由于我将它修改成类似Stream的类所以应该很容易就明白的...
就是这样,有问题回贴...
2012年12月21日 13点12分 5
level 13
爪机无力,留名
2012年12月22日 05点12分 6
level 13
百百mp3 楼主
【更新|v1.5】
更新记录:
1.添加int、float、double、void的指针类型
2.可创建IntPtr类,获取字节位长度
下载地址:[有效] http://pan.baidu.com/share/link?shareid=251784&uk=1611074338
2013年01月28日 16点01分 7
level 1
[顶]
2013年04月26日 10点04分 9
level 10
楼主特好人
2013年07月15日 02点07分 10
楼主的VB.net皮肤怎么做的~~能教我改皮肤吗?
2013年07月27日 06点07分
你是说VS的皮肤吗?那个是VS2012的界面...
2013年07月27日 06点07分
原来如此,怪不得用2010没有这样的设置…… 2012比2010好用吗?占用空间会不会很大?
2013年07月27日 08点07分
我还在用Windows XP,看到2012没说适合XP就没下载。
2013年07月27日 08点07分
level 1
用惯C的指针了,一下子学VB又适应不下来。。
2014年06月02日 06点06分 13
1