请教:我使用了一个dbimage,怎么样使图片按比例缩放显示?就是如果图片的大小小于dbimage的大小就完整显示,如果图片的长或宽大于了dbimage,则按照原来图片大小的比例缩小后显示在dbimage中。

解决方案 »

  1.   

    图象组件有个stretch属性,设置为true可以使图象按照控件的大小进行缩放。
    你试试吧!
      

  2.   

    那个没用的,只是将图片充满整个dbimage,小的图片会被拉伸变形的
      

  3.   

    DBImage.Stretch :=True;
    然后通过DBImage取得图片实际尺寸,按尺寸比例缩小。
    实现方法:
    将DBImage放在一Panel上,
    比较Image的高和宽,
    如果高大于宽,则图片缩小到hight := panel.height
    width := panel.height / image actual height * image actual width
    否则image width = panel.width
    image height = panel.width / image actual width * image actual height这样,只要你调好panel的大小,那么DBImage就会根据以上原则将图片自动适应
    panel的宽和高(如果图片实际高大于宽,则缩小后高为panel高,
    如果图片实际宽大于高,则缩小后宽为panel宽)
    procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
    begin
      if dbimage.Picture.Height >= panel1.height then
      begin
        dbimage.hight := panel.height;
        dbimage.width := panel.height / dbimage.Picture.Height  * dbimage.Picture.width;
      end
      else begin
        dbimage.width = panel.width;
        dbimage.height = panel.width / dbimage.Picture.width* dbimage.Picture.Height;
      end;
    end;
      

  4.   

    我试过了,按这种算法做出来的只是截取了符合panel的长宽的一部分图片,而并没有真正做到按比例缩放,我要的效果是image中的proportional属性效果,可惜dbimage没有这个属性,只能自己来编。
    给你20分,毕竟你的程序也给了我一些启发,要继续加油啊,谢谢!