应该是边界溢出了,因为默认是0开始,所以 PictureBox1.Image.Width-1
创新互联是专业的芜湖网站建设公司,芜湖接单;提供成都网站设计、做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行芜湖网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
同理PictureBox1.Image.Height - 1,不然行循环也会溢出
FileDateTime 和 FileLen 是VB的内置函数 可以直接使用
如果你想获取图像的尺寸 你可以用picturebox控件设置autosize属性,然后加载图像 最后获取picturebox的长宽属性值 就可以使用你图片文件尺寸了。
Private Sub Form_Load()
Debug.Print Picture1.ScaleWidth, Picture1.ScaleHeight
End Sub
要使用GetPixel函数来取得像素的颜色值,代码如下:
1
2
3
4
5
private void button1_Click(object sender, EventArgs e)
{
Color color = new Bitmap(pictureBox1.Image).GetPixel(10, 10);
MessageBox.Show(color.ToString());
你的问题可以这样的解决:
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Print "该点的象素RGB值是:"; GetPixel(Picture1.hdc, x, y)
End Sub
getpixel函数的用法:
Declare Function GetPixel Lib "gdi32" Alias "GetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
说明
在指定的设备场景中取得一个像素的RGB值
返回值
指定点的RGB颜色。如指定的点位于设备场景的剪切区之外,则返回CLR_INVALID
给你的一点建议:学习vb一定要学习vb的api,非常的重要!!
既然小方框的边为纯黑色,那么还是比较好找出小方框的位置的。
假设小方框的大小是不变的(我不知道是否会变,长为a,宽为b,单位pt)
1,通过api取点的颜色。2,因为只找左右的两条边,所以从上到下跳越式的搜索(步长=小方框的宽度b)3,每跳一下,就从左至右的逐像素的搜索,如果找到黑色的点,就上下连续搜索一定数量的点
如果全部为黑色,则证明是一条黑线,说明找到了左边,在左边的基本上,加上宽度,就是右边了。
在此右边还可以用来校验搜索的结果是否正确。4,找到了左右两条边的位置,剩下的就设置你的竖线的位置。
下面给出大体上的代码:
GetPixel函数是获取设备指定点颜色值的。
for
y
=
to
yMax
step
b-1for
x=0
to
xMax
if
GetPixel(hdc,x,y)
=vbBlack
then
'向上搜索一定数量的点,判断是否全部为黑色
'.........
'向下搜索一定数量的点,判断是否全部为黑色
'.........
end
ifnextnext