• C专家编程 第8章 为什么程序员无法分清万圣节和圣诞节 8.2 根据位模式构筑图形


    根据位模式构筑图形
    图标(icon)或者图形(glyph)是一种小型的位模式映射于屏幕后产生的图像。一个位表示图像上的一个像素。如果一个位被设置,那么它所代表的像素就是“亮”的,如果一个位被清除,那么它所代表的像素就是“暗”的。所以一系列的整数值能够用于为图形编码。类似Iconedit这样的工具用来绘制图形。它们所输出的文件是一个包含一系列整型数的ASCII文件,可以被一个窗口程序所包含。它所存在的问题是程序中的图标只是一串十六进制数。在C语言中,典型的16*16的黑白图形可能如下: 
    static unsigned short stopwatch[] = {
        0x07C6,
        0x1FF7,
        0x383B,
        0x600C,
        0x600C,
        0xC006,
        0xDF06,
        0xC106,
        0xC106,
        0x610C,
        0x610C,
        0x3838,
        0x1FF0,
        0x0700,
        0x0000
    };
    这些C语言并未提供一个有关图形实际模样的任何线索。这里有一个惊人的#define定义的优雅集合,允许程序建立常量,使它们看上去像是屏幕上的图形。
    #define X )*2+1
    #define - )*2
    #define s ((((((((((((((((0     /*用于建立16位宽的图形*/ 
    定义了它们以后,只要画所需要的图标或图形等,程序会自动创建它们的十六进制模式。
    使用这些宏定义,程序的字描述能力大大增强,上面这个例子可以转变为:
    static unsigned short stopwatch[] = {
        

    与前面的代码相比,它的意思更为明显。

    标准的C语言具有八进制、十进制和十六进制常量,但没有二进制常量,否则倒是一种更为简单的绘制图形位模式的方法。
    千万不要忘了在绘图结束之后清除这些宏定义,否则很可能会给你后面的代码带来不可预测的后果。 

  • 相关阅读:
    股票交易接口的分类webService接口
    Linux —— 线程池
    c++ 静态库,动态库的制作和使用
    2022牛客多校(四)
    Qt 控制台程序变 非控制台
    Java-使用sqlSessionTemplate实现批量更新-模拟mybatis 动态sql
    64.【冒泡排序与选择排序与malloc()函数】
    LeetCode50天刷题计划(Day 5—— 最长回文子串 10.50-13:00)
    Nacos Discovery--服务治理
    tensorflow-gpu2.4.1安装配置详细步骤
  • 原文地址:https://blog.csdn.net/weixin_40186813/article/details/126082871