我在Picture控件中读入一幅图片,想实现象Photoshop放大图片到那种象素成一个个色块的样子该怎么做.我开始尝试在Picture中加入Shape,用Shape的背景色模拟图片的色块,放大缩小图片是就改变Shape的大小,但这样一来图片有多少个象素就要加入多少个Shape控件,处理的速度就会非常慢.不知各位高手有没有办法解决,小弟感激涕淋.谢谢大家!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    用Image控件吧.
    将Image控件的Stretch属性设为True 就可放大图片
      

  2.   

    要么将你的picture 设成大小可变
    picture1.width=picture1.picture.width要么用image,将Image控件的Stretch属性设为True 
      

  3.   

    放大后自然就成一块一块地了可以通过PaintPicture方法
      

  4.   

    嘿嘿,楼主说得真有趣,“放大图片到那种象素成一个个色块的样子”,如果只是要这样的显示效果,不需要再对图片进行处理的话,使用IMAGE控件加载图片,设置Stretch属性为TRUE,然后只要把IMAGE任意拉长拉宽就可以了,你拉得越大,那个“一个个色块”也就越大。
    如果还需要对这个图片处理的话,就需要使用PICTURE控件了,使用该控件加载图片后,用PAINTPICTURE方法来将图片拉伸,也可以得到相同的效果。
      

  5.   

    Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
      

  6.   

    我是想通过这样把图片处理成十字绣的图片,不知道各位有没有办法,因为十字绣的图片都是由一个个色块组成的。所一不能用Picture、Image等加载图片.
      

  7.   

    no no no 你这个要求我做过,你如果不计较速度的话(30秒左右)用setpixels首先要明确,图像是由像素组成的。使用getpixel函数可以轻松获得所有像素。如果这也不会,很容易就可以学会(大概0。1秒到0。100001秒内),然后用setpixel函数画点放大,同样很简单。最要命的是你就要那种锯齿的放大效果,那真是太容易了。
    把你所有的点都存放在变量里。然后通过运算坐标,比如一个点是x,y ,你的效果是在除了打印原来的点以外,再加上x+1,y;x,y+1;x+1,y+1这三个点就是放大一倍,其他类推。至于原来点的位错关系好像不用考虑,这个东西我弄过,一点都不复杂的。你可以去试试看。另外,用image控健,通过设定strech为true以后,调节image控件大小即可调节图片大小。