Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > некачественное отображение шрифтов


Автор: limelight 6.10.2010, 20:47

В общем, создаю bitmap, связываю его с graphics, и таким образом в нем рисую, помимо рисования вставляю туда картинку и еще текст необходимо поместить. Текст помещается, но выглядит не сглаженным, как обычно, а видно, будто из маленьких кубиков, выглядит грубо..

В чем может быть проблема?

Автор: CYBERDREAM 7.10.2010, 07:34
а можно код?

Автор: limelight 7.10.2010, 09:30
Конечно! Ссори, тут на vb, но я думаю , все должно быть понятно.

        
Код

Dim bmp As Bitmap = New Bitmap(340, 220)
        Dim gr As Graphics = Graphics.FromImage(bmp)
        gr.Clear(SystemColors.ControlLightLight)
        gr.TextRenderingHint = DirectCast(5, Drawing.Text.TextRenderingHint) ' задаем качество текста

        'задаем режим
        gr.SmoothingMode = Drawing2D.SmoothingMode.HighSpeed
        gr.PixelOffsetMode = Drawing2D.PixelOffsetMode.Half

        gr.DrawString(stroka, New Font("Times New Roman", 12), Brushes.Black, 110, 110) ' вот здесь шрифт получается размытый




я потом всю эту картинку, вдобавок отправляю на принтер. На экране видны огрехи немного. При печати еще более заметно.
Хочется чтобы качество было как документе Word например. насколько это возможно?

Автор: CYBERDREAM 7.10.2010, 10:19
попробуй так 
Код

Bitmap im = new Bitmap(pictureEdit1.Width, pictureEdit1.Height,PixelFormat.Format24bppRgb);
            
            
Graphics g = Graphics.FromImage(im);
g.Clear(Color.White);
g.PageUnit = GraphicsUnit.Pixel;
            
g.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
g.SmoothingMode = SmoothingMode.HighSpeed;
g.PixelOffsetMode = PixelOffsetMode.Half;

g.DrawString("Конечно! Ссори, тут на vb, но я думаю , все должно быть понятно.", new Font(FontFamily.GenericSansSerif, 12),//new Font("Times New Roman", 12),
                Brushes.Black, 10, im.Height / 2);

g.Dispose();

Автор: limelight 7.10.2010, 11:12
Не помогает, все равно остаются "шумы".

Автор: CYBERDREAM 7.10.2010, 11:18
у меня помогло) даже не знаю тогда.

Автор: limelight 7.10.2010, 13:58
Смотри) Вот полный код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace myTest2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
          Bitmap bmp = new Bitmap(200, 200);
          Graphics g = Graphics.FromImage(bmp);
          g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;  
              
              g.Clear(SystemColors.ControlLightLight );
              g.DrawString("Александр", new Font("Gals", 28), Brushes.Black    , 0, 0);
          
            pictureBox1.Image = bmp;
        }
        
    }
}

Присмотрись! Видишь на заднем фоне каждой буквы  виднеются голубые пикселы?? При печати они становятся хорошо видимы.

Автор: CYBERDREAM 7.10.2010, 14:07
посмотрел лупой как написан код в VS, тоже есть синие тени, так что даже не знаю

Автор: limelight 7.10.2010, 14:12
Какая тебе лупа? ты если бы код ввел, там видно невооруженным глазом.

Автор: CYBERDREAM 7.10.2010, 14:48
виндовая лупа. Ввел я твой код. невооруженным глазом не увидел синевы. Запустил лупу, увидел. Посмотрел код лупой код в VS, тоже синева.

Автор: limelight 7.10.2010, 16:02
Интересно, и как , введенный код скомпилился?
У тебя ведь не установлен шрифт Gals?!

Ну ладно с этим, все дело в технологии ClearType.

g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;

Стоило отменить, как все заработало норм.
Вопрос решен.
Кибердрим, спасибо за помощь, желаю пореже "смотреть в лупу " и видеть не то что нужно(ругаться не прилично)


Автор: CYBERDREAM 8.10.2010, 07:11
а кто ругался)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)