OpenTK Text始终为白色

时间:2015-04-15 09:34:39

标签: c# fonts opentk

我正在使用OpenTK在C#中进行2D应用程序,以渲染我使用QuickFont库的文本。 我的问题是,当我想改变我的点标签的颜色时,它们根本不会改变,它们总是颜色为白色,我不知道为什么。

这是我的代码:

Color _labelColor = Color.Green; // For example
//... More code ...//
QFont.Begin();
_pointLabel = new QFont(new Font("Tahoma", 5f, FontStyle.Regular));
_pointLabel.Options.Colour = _labelColor; // Here is correct, it's Green
QFont.End();               

foreach (MyPoint p in _points)
{
    if (p.Visible)
    {
        // Draw labels only for visible points
        _pointLabel.Print(p.Label, new Vector2(p.X, p.Y));
    }
}

我希望我的标签颜色随var _labelColor 而变化,但它不起作用。标签的颜色是总是白色,即使我强制为绿色或其他颜色。

我认为我的代码的这一部分是正确的,但我认为我需要首先正确配置OpenTK相机,但我不知道该怎么做。

要添加信息,如果有帮助,我正在使用普通纹理和精灵纹理。

任何帮助都会非常苛刻。

抱歉我的英文。

2 个答案:

答案 0 :(得分:0)

我找到了答案,问题是我加载了纹理错误,所以我不知道为什么我不能为字体设置颜色。

我的加载纹理功能现在如下:

private int LoadTexture(Image img)
{
    Bitmap bmp = new Bitmap(img);
    int id_textura = GL.GenTexture();
    GL.BindTexture(TextureTarget.Texture2D, id_textura);

    BitmapData bmp_data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

    GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, bmp_data.Width, bmp_data.Height, 0, OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, bmp_data.Scan0);

    bmp.UnlockBits(bmp_data);

    // We haven't uploaded mipmaps, so disable mipmapping (otherwise the texture will not appear).
    // On newer video cards, we can use GL.GenerateMipmaps() or GL.Ext.GenerateMipmaps() to create
    // mipmaps automatically. In that case, use TextureMinFilter.LinearMipmapLinear to enable them.
    GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
    GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);

    return id_textura;
}

我在问题中写的代码是正确的。我希望它对任何人都有帮助。

抱歉我的英文。

答案 1 :(得分:0)

检查此示例

 QFontRenderOptions textOpts;
 textOpts = new QFontRenderOptions()
 {
     Colour = Color.White, //Color.DarkRed, etc
     DropShadowActive = false
 };
 QFont myFont = new QFont(folder+"arial.ttf", 7, new QFontBuilderConfiguration(true));
 QFontDrawing drawing = new QFontDrawing();
 drawing.Print(myFont, "cad", position, QFontAlignment.Left, textOpts);
 drawing.RefreshBuffers();
 drawing.Draw();