Member 13981298 Ответов: 0

Как печатать этикетки на glcontrol in opengl.net без использования GLUT


Нужно напечатать ярлыки на коробке GlControl для графика. Это можно легко сделать с помощью Glut. Однако, OpenGL.Net похоже, он не поддерживает перенасыщение.

Что я уже пробовал:

Попробовал написать строку на растровом изображении, а затем распечатать ее на Glcontrol, но она печатает какое-то мусорное значение.
Приложение находится в WinForm.

Следующий код был записан в функции делегата события GlControl.render:

Gl.Clear(ClearBufferMask.ColorBufferBit);
            Gl.ClearColor(1f,1f,1f,0);
            Gl.MatrixMode(MatrixMode.Texture);
            Gl.LoadIdentity();
            Font drFont = new Font("Arial", 10);
            Pen redPen = new Pen(Color.Red, 1);
            SolidBrush drBrush = new SolidBrush(Color.Red);
            Bitmap bmp = new Bitmap(100,100,System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            RectangleF rectf = new RectangleF(0, 0, bmp.Width, bmp.Height);

            // Create graphic object that will draw onto the bitmap
            Graphics g = Graphics.FromImage(bmp);

            g.SmoothingMode = SmoothingMode.AntiAlias;

            // The interpolation mode determines how intermediate values between two endpoints are calculated.
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;

            // Use this property to specify either higher quality, slower rendering, or lower quality, faster rendering of the contents of this Graphics object.
            g.PixelOffsetMode = PixelOffsetMode.HighQuality;

            // This one is important
            g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;

            // Create string formatting options (used for alignment)
            StringFormat format = new StringFormat()
            {
                Alignment = StringAlignment.Center,
                LineAlignment = StringAlignment.Center
            };  
            g.DrawString("Abc", new Font("Tahoma", 80), Brushes.Black, rectf, format);

            // Flush all graphics changes to the bitmap
            g.Flush();
            ImageConverter i = new ImageConverter();
            byte[] b = (byte[])i.ConvertTo(bmp, typeof(byte[]));
            Gl.RasterPos3(0, 0, 0);
            Gl.Bitmap(100, 100, 0, 0, 0, 0, b);



заранее спасибо

0 Ответов