您现在的位置是: 软件 > 设计在线 > 网页陶吧 > 技术平台 > HTML学习 > 正文


-Win xp中的多种网络
-试验试验试验试验
-用Freehand实现位图矢量化
-网络电话面面观

api技巧集(七)下
2000-12-08· ·符东亮··yesky

1 2 3  下一页

  屏幕放大镜

  你一定用过Windows98自带的那个屏幕放大镜吧,你想不想自已做一个呢?其它,这个程序的关键是使用了API函数StretchBlt。

  调用API函数StretchBlt可以把一个设备中指定大小的位图从拷贝到另一个设备,在拷贝的过程中,还可以根据需要来缩放位图。

  下面是它的原型和参数说明:

BOOL StretchBlt

(

HDC hdcDest, //目标设备句柄

int nXOriginDest, //目标矩形左上角的X坐标

int nYOriginDest, //目标矩形左上角的Y坐标

int nWidthDest, //目标矩形的宽度

int nHeightDest, //目标矩形的高度

HDC hdcSrc, //源设备句柄

int nXOriginSrc, //源矩形左上角的X坐标

int nYOriginSrc, //源矩形左上角的Y坐标

int nWidthSrc, //源矩形的宽度

int nHeightSrc, //源矩形的高度

DWORD dwRop //光栅运算操作

);

  StretchBlt函数的头文件为“wingdi.h”。其中,它的dwRop参数有15种操作,最常用的就是拷贝运算SRCCOPY了。当源设备和目标设备指定的矩形大小不相等时,函数会根据源矩形和目标矩形的大小比例对位图进行放大或缩小操作后,拷贝到目标设备中。

  下面就是一个把屏幕上左上角坐标为0x0、宽和高都为100的矩形位图缩小2倍后拷贝到图片控件Image1中的例子:

StretchBlt(Image1-$#@62;Canvas-$#@62;Handle, 0, 0, 50, 50, GetDC(0), 0, 0, 100, 100, SRCCOPY);

  这句代码的GetDC(0)语句为取得桌面设备的句柄。

  如果不断地使用上面那句代码,把屏幕缩小放到Image1中,这就成一个“屏幕缩小镜”了。当然,缩小屏幕并没有什么实际的用处,我们只要把它改一下就可以做成“屏幕放大镜”了。

  要做这个“屏幕放大镜”,首先要运行Borland C Builder,在窗体Form1上放上一个图片控件Image1和一个时间控件Timer1。

双击窗体Form1,在它的OnCreate事件中加入代码:

void __fastcall TForm1::FormCreate(TObject *Sender)

{

Image1-$#@62;Width=200;

Image1-$#@62;Height=200;

Timer1-$#@62;Interval=10;

1 2 3  下一页

■ 相关内容
 api技巧集(七)上
 在C++Builder中编写发送图象文件程序
 Collections API定制实现(一)
 api技巧集(六)
 api技巧集(四)
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!