c# – 如何绘制正方形边框?

我使用单声道(使用XNA API接口)写我的游戏.到目前为止,它是伟大的,但我已经打破了一些应该是简单的东西.

我需要画一个2d平方.但我只想要边框(不填).

我看到很多例子,显示如何做一个填补的.但是没有一个只会显示一个边界.

我想我可以做一个图像并使用它.但我怀疑它会调整好.

解决方法

我刚刚以这种方式创建了一个Texture2D的扩展方法
static class Utilities {
    public static void CreateBorder( this Texture2D texture,int borderWidth,Color borderColor ) {
        Color[] colors = new Color[ texture.Width * texture.Height ];

        for ( int x = 0; x < texture.Width; x++ ) {
            for ( int y = 0; y < texture.Height; y++ ) {
                bool colored = false;
                for ( int i = 0; i <= borderWidth; i++ ) {
                    if ( x == i || y == i || x == texture.Width - 1 - i || y == texture.Height - 1 - i ) {
                        colors[x + y * texture.Width] = borderColor;
                        colored = true;
                        break;
                    }
                }

                if(colored == false)
                    colors[ x + y * texture.Width ] = Color.Transparent;
            }
        }

        texture.SetData( colors );
    }
}

然后我测试了:

//...

protected override void Initialize( ) {
   // Todo: Add your initialization logic here
   square = new Texture2D( GraphicsDevice,100,100 );
   square.CreateBorder( 5,Color.Red );

   base.Initialize( );
}

//...

protected override void Draw( GameTime gameTime ) {
   GraphicsDevice.Clear( Color.CornflowerBlue );

   // Todo: Add your drawing code here
   spriteBatch.Begin( );
   spriteBatch.Draw( square,new Vector2( 0.0f,0.0f ),Color.White );
   spriteBatch.End( );

   base.Draw( gameTime );
}

结果如下:

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...