小第最近遇到这个难题,不知如何下手!!
   要实现的功能是 左键在tif图像上实现区域选取,出现一个矩形框,之后就是对选取的区域的部分进行局部放大查看,效果要清晰的 。
   不要告诉我用这个函数哟StretchBlt 
     这个放大的效果极不清晰。
请教中............
  email: [email protected]
高分求教!!

解决方案 »

  1.   

    Option ExplicitPrivate Sub Command1_Click()
        Me.ImgEdit1.Image = "e:\test.tif"
        Me.ImgEdit1.Display
    End SubPrivate Sub Command2_Click()
        Me.ImgEdit1.ZoomToSelection
    End Sub
    如果感到效果不满意的话,可以考虑根据根据一定的算法进行缩放(如插值法)
      

  2.   

    zoomtoselection方法要在什么情况下用啊!
    刚才楼上那位,我这没有imgedit控件的手册资料!!
      我按你的试了试,出现错误:
        需要选取所选的矩形范围。
        Unable to zoom to the selection!
      怎么来选取矩形框,我认为这个是重点,在把数据返回到zoomtoselection方法中??
      怎么实现。。
      选取矩形框我用SelectionRectangle方法没什么反映!
      真是郁闷!
      望不吝赐教! 
      再线等.........
      

  3.   

    ImgEdit是个什么控件?我也没用过
    提供一个思路,不知是否可行,供楼主参考
    我写过一个BMP图片处理的小工具,主要对图片做一些比较特殊的处理,其中对图片放大的功能我采用的这种方式:
    获得所选择区域中的每个象素点的颜色值,然后按象素点的坐标在显示区一一对应绘出2X2或4X4(依放大倍数而定)的矩形,并用该点的颜色填充矩形,这样就获得了一个放大N倍的图形,效果还可以,楼主不妨一试。
      

  4.   

    现在明白你的意思了,看看这个:
    http://www.fantasiasoft.net/Zyl910/zScale.zip//选取矩形框后会产生个什么事件吗??会产生SelectionRectDrawn事件:Private Sub ImgEdit1_SelectionRectDrawn(ByVal Left As Long, ByVal Top As Long, ByVal Width As Long, ByVal Height As Long)
        
    End Sub
      

  5.   

    感谢rainstormmaster(暴风雨 v2.0) 的帮助,ImgEdit1_SelectionRectDrawn能用了,但是我 现在要解决的是把选取的矩形框的数据单独进行放大,其他的部分图像大小不变,怎么把所选矩形框内图像进行 提取出来,在另外的一个窗口显示。
      我主要是要实现这个功能的。
      这个例子http://www.fantasiasoft.net/Zyl910/zScale.zip讲的是对某一幅bmp /jpg/gif的整个比例的缩放,我现在关键是不知道如何 在一个整图中提取所选的部分的图像。
       firechun(天火) 所说的的那个方法取所选区域的像素点值,我试试看。谢谢....
    望各位再次解答............
      

  6.   

    对TIF格式的图象,可能要麻烦一点(我不知道TIF的格式。)
    对BMP来说,直接从文件中获取指定块的数据很简单,可以根据矩形的Left,Top直接在文件中找到数据的起始位移,并通过width,height来获得数据块,不需要从屏幕上逐点取象素点值。
    如果了解TIF的格式,做到这点并不难。
      

  7.   

    关键是我对tif图像格式也不是很了解。
     所以现在似懂非懂的样子,模糊的很。手头也没这方面的资料看。
      我在找imgocxd.hlp,网上找半天了,没搜索到。有的发到我邮箱:[email protected]
      

  8.   

    TIF的格式我倒是有,原来没看过,不知道复不复杂,不复杂的话我可以帮你写一下,否则可能没那么多时间,呵呵
      

  9.   

    //关键是我对tif图像格式也不是很了解http://www.fantasiasoft.net/Zyl910/zScale.zip中图象缩放部分使基于hdc的,不需要你了解tif的文件格式//我现在关键是不知道如何 在一个整图中提取所选的部分的图像
    用api抓图即可(问专家网站上,有这样一段程序,你可以找来看看),抓完图后另存为临时文件(bmp格式即可),然后就可以用http://www.fantasiasoft.net/Zyl910/zScale.zip了当然你也可以用设备场景进行部分图象的获取(imgedit控件有hwnd属性,可以用这个属性获得相应的hdc)
      

  10.   

    若用api先抓的话,这样就太麻烦了,而且我这个要具有非常必要的实用性,不只是谈实现的问题。
    假使我添加2个imgedit控件 imgedit1和imgedit2
      我现在想到用imgedit1.ClipboardCopy left,top,width,height
    这个能得到我所选的区域的图像, 但怎么把imgedit1中的ClipboardCopy的内容  传送到 另外一个imgedit2的ClipboardCopy的方法中????
      就是先在imgedit1上用SelectionRectDrawn和ClipboardCopy选取抓图,取得的数据如何传到imgedit2中去呢!!
      

  11.   

    ImgEdit2.ClipboardPaste 参数表
      

  12.   

    imgedit2都还没取得数据,怎么来ClipboardPaste呀。??
      现在只是在imgedit1.ClipboardCopy中采集到了数据撒。
         难道  剪贴板  的数据是公用的???
      

  13.   

    //难道  剪贴板  的数据是公用的当然了,不过在实际应用中,你要事先为imgedit2随便载入一幅图片,否则会报错
      

  14.   

    关键是 我随便插入 一副图片,,,从剪贴板粘贴的数据不是可能被我随便插入的图片迷糊了呀。
       那随便插入的图片不影响我看我粘贴的那部分图片,,
    能不能把剪贴板的数据单独保存为某个*.tif文件呀???
    我在通过别的把这新的图片显示出来.
      

  15.   

    //关键是 我随便插入 一副图片,,,从剪贴板粘贴的数据不是可能被我随便插入的图片迷糊了呀。
       那随便插入的图片不影响我看我粘贴的那部分图片,,不会影响的//能不能把剪贴板的数据单独保存为某个*.tif文件呀???
    这个也可以
      

  16.   

    关键是怎么把 剪贴板的数据单独保存为tif文件呀??
       imgedit.save 或者saveas 是把imgedit控件当前显示的图片保存或另存了。
      我那剪贴板 的数据咋个方法保存为新的tif文件呀??