更改图象的大小(100分)

  • 主题发起人 主题发起人 Johnqiu
  • 开始时间 开始时间
J

Johnqiu

Unregistered / Unconfirmed
GUEST, unregistred user!
我想更改图象的大小,如把800*600的图象改为600*480的图象
并保存图象.
我听说可以用directDraw来实现,但是我不大会DirectDraw
有没有别的方法.
同时我也希望了解一下DirectDraw的功能和如何在Delphi中
实现调用DirectDraw
同时介绍一下关于DirectDraw的书籍,最好是对Delphi的.
我的要求是不是太多了,不过请各位大虾见谅!
 
哪需要那么麻烦?
新建一幅bmp, 设置大小为640*480, 然后用Canvas.CopyRect将800*600的图象copy
过来再保存就可以了嘛.
 

这点工作确实不需要用DirectDraw的,如果对此感兴趣,又只希望
看Delphi的相关资料,好象只有《Delphi4编程技术内幕》里有了;
不介意看C++或C的话,那文档和源码多的是,光MSDN里的东西就
够你琢磨一阵了,国内也有很多优秀个人主页, 比方说DirectX工作室,
URL不在手边,去网易搜索引擎查查,肯定有的。
 
高效率的Api函数。
BOOL StretchBlt(

HDC hdcDest, // handle of destination device context
int nXOriginDest, // x-coordinate of upper-left corner of dest. rect.
int nYOriginDest, // y-coordinate of upper-left corner of dest. rect.
int nWidthDest, // width of destination rectangle
int nHeightDest, // height of destination rectangle
HDC hdcSrc, // handle of source device context
int nXOriginSrc, // x-coordinate of upper-left corner of source rectangle
int nYOriginSrc, // y-coordinate of upper-left corner of source rectangle
int nWidthSrc, // width of source rectangle
int nHeightSrc, // height of source rectangle
DWORD dwRop // raster operation code
);


 
用TCanvas的StretchDraw方法就行了,根本用不着DirectDraw
 
最好办法,采用自己编程控制像素,可以进行平滑的放大缩小,

直接用 StrctchDraw 的结果太惨不忍睹了。
 
从大到小用StretchDraw应该没什么问题吧
 
多人接受答案了。
 
后退
顶部