我刚开始学习XNA。这是我作为一个侧面“有趣”项目写作的第一个程序。将自定义创建的位图绘制到屏幕
我在绘制创建到屏幕上的位图时遇到问题。
我知道正在正确地创建位图,因为当我运行
bitmap.Save(@"C:\jnk\test.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
它保存了正确的位图
我试图显示从类绘制函数图像却无法得到任何出现。我发现了一些来源使用的System.Drawing.Graphics类来创建位图,它也显示它与它
bitmapGraphics.DrawImage(bitmap, new System.Drawing.Point(this.boardXOffset, this.boardYOffset));
bitmapGraphics绘制到屏幕是一个Systems.Drawing.Graphics对象和boardOffsets均为0 。我试图从一个在我的main函数的draw函数中调用的类中绘制它。
但是我什么也没得到,没有错误,也没有显示。我会猜测这是因为它不知道什么对象可能绘制它?但是我对xna的知识缺乏......任何帮助都会很棒。
如果它可以帮助在所有主要的Program.cs运行此作为其绘制函数
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
BoardGraphicsEngine.Draw();
base.Draw(gameTime);
}
,并在BoardGraphicsEngine绘制函数是
public void Draw()
{
int width = Convert.ToInt32(System.Math.Ceiling(board.pixelWidth));
int height = Convert.ToInt32(System.Math.Ceiling(board.pixelHeight));
width += 1;
height += 1;
Bitmap bitmap = new Bitmap(width, height);
Graphics bitmapGraphics = Graphics.FromImage(bitmap);
Pen p = new Pen(System.Drawing.Color.Black);
SolidBrush sb = new SolidBrush(System.Drawing.Color.Black);
sb = new SolidBrush(board.boardState.backgroundColor);
bitmapGraphics.FillRectangle(sb, 0, 0, width, height);
... Loop through board and create with a couple calls to
bitmapGraphics.FillPolygon(new SolidBrush(board.hexes[i, j].hexState.BackgroundColor), board.hexes[i, j].points);
and
bitmapGraphics.DrawPolygon(p, board.hexes[i, j].points);
and
bitmapGraphics.DrawPolygon(p, board.boardState.activeHex.points);
//bitmap.Save(@"C:\jnk\test.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
bitmapGraphics.DrawImage(bitmap, new System.Drawing.Point(this.boardXOffset, this.boardYOffset));
bitmapGraphics.Dispose();
bitmap.Dispose();
}
}
原始来源大部分是http://www.codeproject.com/KB/graphics/hexagonal_part1.aspx但部分问题可能是这个例子是一个Windows窗体,我正在创建一个xna项目