代码之家  ›  专栏  ›  技术社区  ›  Ian Boyd

如果DibSection独立于任何设备,为什么它需要设备上下文?

  •  0
  • Ian Boyd  · 技术社区  · 6 年前

    创建位图时 四种选择:

    • CreateBitmap :创建设备相关位图 (它最好与你最终打算使用的设备兼容)
    • CreateCompatibleBitmap :创建设备相关位图 (与您提供的直流电兼容)
    • CreateDIBitmap :创建与设备相关的位图,但允许您指定与设备无关的位,以使用 1 (在功能上等同于调用 创建兼容的ebitmap + 刚毛 )
    • CreateDIBSection : 创建设备独立位图(但我必须提供DC?)

    有道理为什么 创建兼容的ebitmap 需要一个 hdc 参数:它必须知道与哪个DC兼容。

    注意 :为什么 创建位图 拿一个 hdc公司 . 它怎么知道要兼容哪个DC?

    创建位图 不需要DC,而且 知道要兼容哪个DC。那是你的工作。你最好确保它与你最终打算使用的DC兼容。

    为什么 创建分区 获取设备上下文的句柄?

    CreateDIBSection函数

    CreateDIBSection函数创建一个应用程序可以直接写入的DIB。函数为您提供指向位图位值位置的指针。您可以为函数将用于创建位图的文件映射对象提供句柄,也可以让系统为位图分配内存。

    | Function               | Type | Takes hdc |
    |------------------------|------|-----------|
    | CreateBitmap           | DDB  | No        |
    | CreateCompatibleBitmap | DDB  | Yes       |
    | CreateDIBitmap         | DDB  | Yes       |
    | CreateDIBSection       | DIB  | Yes       |
    

    DIBs怎么办?

    奖金问题

    Q、 怎么回事 创建位图 ?

    A、 这取决于你来确保它是兼容的。祝你好运!或者你可以用 创建兼容的ebitmap

    额外阅读

    1 回复  |  直到 5 年前
        1
  •  1
  •   Ian Boyd    5 年前

    答案似乎是:

    • 这个 hdc 只有在 usage = DIB_PAL_COLORS
    • 否则(即。 usage = DIB_RGB_COLORS )那么 hdc公司 可以 任选