各位大神,最近在做一个小程序,delphi通过ole往excel指定的位置插入图片,并缩小图片尺寸;
目前插入图片和缩小图片的操作都正常,但是操作后我发现了一个问题:
通过delphi插入的图片,通过拖拽放大到原始尺寸时,显示质量急剧下降,图片很模糊;
而通过人工在excel插入的图片,通过拖拽缩小后再放大到原来尺寸,图片是基本没有变化的;请教各位大神,delphi该怎样操作,才能不改变原图像的质量?注:
1,现场录制宏,并不能录下插入图片和放大缩小图片的操作,是在网上查的操作资料;
2,试验了两种改变图片大小的方式,一个是通过picture.width和height的方法改变大小,
      另外一个是通过selection.ShapeRange.scalewidth和scaleheight的方法改变大小,两者效果差不多都会损失图片质量;
3,我以为是矢量图的原因,但是试验了一下ps软件生成的eps格式图像,发现不能执行插入操作;
      因为不能录制宏,不能知道是否有另外的.插入图片方法

解决方案 »

  1.   

    ,delphi通过ole往excel指定的位置插入图片,并缩小图片尺寸
    -----------------------------------------------------------------------------------
    我印象里,添加图片有附加属性,决定图片是按照原始照片添加,还是按照指定的尺寸缩放添加,i最好看一下office二次开发文档
      

  2.   

    回复 日月路明:
            我网上找了一下,没有发现有用的office二次开发的文档,大部分都是通过录制宏的方法。因为我不太会从网上找这类资料,不知大神有没有相关的资料?谢谢
      

  3.   


    workRange := XLApp.ActiveSheet.Range[XLApp.ActiveSheet.Cells.Item[1, 1],XLApp.ActiveSheet.Cells.item[1, 1]];
    XLApp.ActiveSheet.Rows[1].RowHeight := 50;
    workRange.ColumnWidth := 50;
    picture := XLApp.ActiveSheet.Pictures.Insert(PicPath);
    picture.left := workRange.left + 1; //左
    picture.top := workRange.top + 1; //高
    picture.width := workRange.width - 2; //宽度
    picture.height := workRange.height - 2; //高度
    没有旧版本Office测试,这种不行?
      

  4.   

    通过ole对Woed或excel的操作,速度慢,而且很不畅。不如歈和第三方控件。
      

  5.   


    有成熟的控件吗?delphi自带的不好用,所以我一直没有考虑,谢谢指点
    目前我的方法是先采用GDI+算法,将图片缩小成需要的大小,然后再原图插入进去,效果有所好转,但是达不到理想状态