如何以编程方式创建位图?

时间:2009-08-14 11:43:14

标签: winapi image bmp

我想以编程方式创建一个随机X高度和Y宽度的位图文件。

对我而言,内容无关紧要。它可能都是白色的,空的。重要的是维度。

如何使用Windows API进行操作?

5 个答案:

答案 0 :(得分:2)

您希望使用Windows API创建位图文件吗?没有特定的帮助。然而,BMP文件非常简单:

  • 写出BITMAPFILEHEADER结构。
  • 写出BITMAPINFO结构。
  • 写出一个字节数组,足以保存BITMAPINFO结构中描述的格式和尺寸。

MSDN有一个Article,其中包含示例代码示例。

答案 1 :(得分:0)

在.Net中你可以新建一个Bitmap对象:

Image myImage = new Bitmap(width, height);

答案 2 :(得分:0)

如果您真的坚持使用Windows API制作图像,则应使用Gdi32.dll 在C#中只需调用

将dll文件导入程序集,以便在

中使用外部方法
DllImport["Gdi32.dll"]
HBITMAP CreateCompatibleBitmap(
  HDC hdc, 
  int nWidth, 
  int nHeight
); 

然后从此位图调用Bitmap类,如

Bitmap bmp = Bitmap.FromHbitmap( nameOfBitmap );
bmp.Save("C:\NewImage.jpg");

msdn页面here

中有一个例子

答案 3 :(得分:0)

GDI +包括用C ++加载/保存BMP图像的命令。此示例代码显示了如何加载和保存图像:Converting a BMP Image to a PNG Image。 Bitmap类还有一个ctor,它采用宽度,高度和像素格式来创建空图像。

答案 4 :(得分:0)

我想你安装了Microsoft .NET 2.0 Framework。 (1.1也可用)。

使用记事本,使用以下代码创建test.cs文件:

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length == 3)
                new System.Drawing.Bitmap(System.Convert.ToInt32(args[0]), System.Convert.ToInt32(args[1]))
                    .Save(args[2] + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);
            else
                System.Console.WriteLine("Usage: test.exe 100 200 filename");
        }
    }
}

然后使用以下代码创建test.cmd文件:

@echo off
%windir%\Microsoft.NET\Framework\v2.0.50727\csc.exe /t:exe test.cs

执行test.cmd

执行text.exe