2009-08-14 46 views
1

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

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

如何使用Windows API执行此操作?

+2

什么语言? – smok1 2009-08-14 11:44:03

+0

我想用Windows API来做...然后它真的没关系。 VB6,C++,你选择 – 2009-08-14 11:47:04

回答

0

在.NET中你可以新兴起来的一个位图对象:

Image myImage = new Bitmap(width, height); 
+0

.NET不是一种选择,我只想使用Windows API来完成 – 2009-08-14 11:48:10

2

要创建使用Windows API的位图文件?这没有特定的帮手。但BMP文件很简单:

  • 写出一个BITMAPFILEHEADER结构。
  • 写出BITMAPINFO结构。
  • 写出一个字节数组,足以容纳BITMAPINFO结构中描述的格式和维数。

MSDN的Article示例代码演示如何。

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

+0

这将如何解决他的问题?他无法以这种方式保存BMP文件。 – Niki 2009-08-14 12:06:12

+0

在这个问题中创建位图非常重要,而不是保存! – Myra 2009-08-14 12:20:14

0

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

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

执行文本.exe