代码之家  ›  专栏  ›  技术社区  ›  Nick

在像素之间插入空格

  •  1
  • Nick  · 技术社区  · 17 年前

    我需要能够使用GDI在屏幕上绘制特定分辨率(~40 DPI)的位图,并且能够复制每个像素之间的间距。空间是像素大小的一小部分,但它是肉眼可见的。

    2 回复  |  直到 17 年前
        1
  •  1
  •   Aric TenEyck    17 年前

    听起来你想把一幅图像从40 dpi扩展到显示器的~110 dpi,但不是扩展像素,而是每英寸只画40个像素,其余的都是白色。

    我不知道GDI中有什么能做到这一点。此外,除非进行整数缩放,否则效果会非常糟糕,即原始位图中的每个像素正好有一个或两个白色像素,这将严重限制最终大小的选择。您可以通过使用亚像素渲染(例如ClearType)稍微调整一下,但这将是您必须编写的更专门的代码(和特定于监视器的!)。现在,您可能需要逐像素构建一个新的位图。

    foreach(point p in oldBitmap)
    {
        // draw a 2x2 box into every 3x3 box
        newbitmap.DrawBox(p.x * 3, p.y * 3, 2, 2, p.Color); 
    }
    DrawBitmap(target, newbitmap)
    

    您可能需要添加一些单像素调整,以在边缘周围获得漂亮的白色边框。

    这仍然会留下5/9的像素为白色,这意味着您将有一个非常褪色的图像。

    你是想模仿旧的显示器还是别的什么?

        2
  •  0
  •   MusiGenesis    17 年前

    使现代化

    推荐文章