编程词典
明日图书
明日软件
用户注册
用户登录
站内
  当前位置:编程词典服务网 >> 编程词典社区论坛 >> 相同图案输出
  · 相同图案输出

用户:  明日科技
发帖:  417 篇
作品:  1 个
回复:  2 篇
技术分:  805 分
等级:  
注册:  2009-09-07 06:37:23



发表于:2010-06-11 08:59:01
          楼主

在屏幕中绘制一个矩形图案并画出其对角线,要求按任意键输出三个相同图案。

l 图像存储大小函数imagesize()

unsigned imagesize(int xl,int yl,int x2,int y2);

作用是返回存储一块屏幕图像所需的内存大小(用字节数表示)。参数x1,y1为图像左上角坐标,参数x2,y2为图像右下角坐标。

l 保存图像函数getimage()

void getimage(int xl,int yl, int x2,int y2, void *buf);

作用是保存左上角与右下角所定义的屏幕上的图像到指定的内存空间中。参数x1,y1为图像左上角坐标,参数x2,y2为图像右下角坐标,参数buf指向保存图像的内存地址。

l 输出图像函数putimage()

void putimge(int x,int,y,void *buf, int op);

作用是将一个以前已经保存在内存中的图像输出到屏幕指定的位置上。数x1,y1为将要输出的图像左上角坐标,参数x2,y2为将要输出的图像右下角坐标,参数buf指向保存图像的内存地址,参数op规定如何释放内存中图像,op的值常见表:

符号常数

数值

  

COPY_PUT

0

复制

XOR_PUT

1

与屏幕图像异或的复制

OR_PUT

2

与屏幕图像或后复制

AND_PUT

3

与屏幕图像与后复制

NOT_PUT

4

复制反像的图形

#include <graphics.h>

#include <stdlib.h>

#include <conio.h>

main()

{

    int gdriver, gmode;

    unsigned size;

    void *buf;

    gdriver = DETECT;

    initgraph(&gdriver, &gmode, "");                                                            /*图形界面初始化*/

    setcolor(15);                                                                                         /*设置绘图颜色为白色*/

    rectangle(20, 20, 200, 200);                                                                    /*画正方形*/

    setcolor(RED);                                                                                     /*设置绘图颜色为红色*/

    line(20, 20, 200, 200);                                                                           /*画对角线*/

    setcolor(GREEN);                                                                                 /*设置绘图颜色为绿色*/

    line(20, 200, 200, 20);

    outtext("press any key,you can see the same image!!");

    getch();

    size = imagesize(20, 20, 200, 200);                                                          /*返回这个图像存储所需字节数*/

    if (size !=  - 1)

    {

        buf = malloc(size);                                                                          /*buf指向在内存中分配的空间*/

        if (buf)

        {

            getimage(20, 20, 200, 200, buf);                                                          /*保存图像到buf指向的内存空间*/

            putimage(100, 100, buf, COPY_PUT);                                                 /*将保存的图像输出到指定位置*/

            putimage(300, 50, buf, COPY_PUT);

            putimage(400, 150, buf, COPY_PUT);

        }

    }

    getch();

    closegraph();                                                                                        /*退出图形状态*/

}

本帖赏分:0 分   回复数:0 篇     
修改   删除   引用   回复
该帖暂无回复!
吉林省明日科技有限公司提供技术支持. 
Copyright © 1999-2008 吉林省明日科技有限公司. 吉ICP备10002740
当前时区 GMT+8, 今天是 
刷新页面 - 关于我们 - 设为首页