在屏幕上直接绘图的解答

在屏幕上直接绘图
    我一开始学习C语言时懂了点汇编,所以很多时候我编一个程序总是想了解它的底层运行情况.在我眼里程序就是数据从内存到CPU,从内存到显卡而已.那时我没有注意到我写的程序全是console程序.我也不知道什么是win32窗口.
    有一天老师在Turbo C展示了一个图形程序,就是很经典的那个Tree.原来C可以写图形程序呀.....
    带着强烈的好奇心,我开始看图形编程的书,第一本就是<<windows编程>>.真是无语了,一开始就遇到它,上手就是消息机制,还有一个当时觉得好麻烦的WinMain().后面全是窗口机制相关的. 
    windows API里面好多窗口机制相关内容,什么控件组件的. 我总是想了解它的底层运行情况.  但是复杂的内部机制是不可想像的.... 这跟我心中的"图形编程"差了好远...
    当时我只是想在屏幕上画个圆而已呀!就是那种在屏幕上一个点一个点的画那种(直接在显示器上画,不要窗口).
    那年我上大一,我浪费了好多时间在这个无关的地方.
   

    用VC加几个控件可以用来显示图片,但是要画一个圆,在windows下还是有点麻烦的.....
一年过去了,再看看当时的想法,又去查查资料,在屏幕上直接绘图是可行的.一个SetPixel()函数而已.
#include <windows.h>
int main()
{
int i=0;
int j=0;
for(i=0;i<200;i++)
for(j=0;j<200;j++)
SetPixel(GetDC(0),i,j,250);
getchar();
}

GetDC(0)获取整个显示器的抽象起始位置(windows下为设备句柄),GetDC('窗口')可以用来获取窗口的起始位置(说是句柄更准确一些)
SetPixel(A,i,j,250)在A这个抽象起始位置,以i,j为坐标250为颜色描点.
如果是BMP图像的话,还要加工,如果是jpeg还要解码.......

这几个函数也可以使用:

Ellipse(GetDC(NULL), 0, 0, 150, 100);
RoundRect(GetDC(NULL),100,100,300,300,20,20);
Arc(GetDC(NULL),200,200,30,30,30,30,30,30);
Pie(GetDC(NULL),400,400,50,50,50,50,50,50);

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值