S_Bmp,D_Bmp分别为TBitmap。我想将"S_Bmp"放大到800x600,并存入"D_Bmp"中,我使用了以下这条语句:
D_Bmp.Canvas.StretchDraw(rect(0,0,800,600),S_Bmp);但是为何在WinMe中可以正常放大,而在Win2000中却没有作用?!请问在Win2000中应如何才能实现将S_Bmp放大到800x600并存入D_Bmp?(不要使用TImage.Stretch:=true语句、该语句不适合我要编写的东东!)
望请指教,万分感激!

解决方案 »

  1.   

    我这儿没有用WIN ME,没有作比较。
    不过可以象这样做,一来速度快些,二来减少未知因素影响。
    D_Bmp.Canvas.CopyRect(
          Rect(0,0,800,600),
          S_Bmp.Canvas,
          Rect(0,0,S_Bmp.Width,S_Bmp.Height));
      

  2.   

    另外,补充一下,我在WIN2000下面用Canvas.StretchDraw没有问题.在画D_BMP之前,要设置
    D_Bmp.Width:=800;
    D_Bmp.Height:=600;
      

  3.   

    谢谢您的回答。
    CopyRect不能使用,该东东失真太严重了。Canvas.StretchDraw单独拉伸一张图片还可以,如果想要连续的拉伸几张图片并请其形式一个动画的效果,就会失效了。如果有空,您再试试看....
      

  4.   

    StretchDraw此函数把图象都扭曲了,不好!一般要根据用户的分辨率来写二个bmp!
      

  5.   

    snake_eye(黄昏深处的白骨盾牌) 大侠,能不能讲详细一点呢?能不能指点我该如何实现?有代码吗?
      

  6.   

    嗯。。明白你的意思,
    你可以在VCL下面这个函数里设置断点,编译选项里面加上USE DEBUG DCU
    调试程序跟踪进入,看具体哪儿的问题。procedure TBitmap.Draw(ACanvas: TCanvas; const Rect: TRect);在GRAPHICS单元。