Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2010, 11:34   #1
Lemon2009
Пользователь
 
Аватар для Lemon2009
 
Регистрация: 29.07.2009
Сообщений: 72
Вопрос TextOut и шрифт

Здравствуйте.

Вывожу на картинке текст (с помощью канваса, TextOut) определенного цвета (допустим черный), но рисует сглаживанием. В итоге цвет получается черный и серые тона с краев (сглажимание помоему идет).
как можно нарисовать сполшным одним цветом?
Изображения
Тип файла: png e.png (371 байт, 450 просмотров)
Совершенство в простоте
Lemon2009 вне форума Ответить с цитированием
Старый 01.09.2010, 11:36   #2
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Рисуй с помощью шрифта Arial.
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 01.09.2010, 11:44   #3
Lemon2009
Пользователь
 
Аватар для Lemon2009
 
Регистрация: 29.07.2009
Сообщений: 72
По умолчанию

или может кто знает алгоритм, который может сменить потом черный свет в другой так, чтобы и эти серые тона тоже сменились на указанный цвет с тем же тоном. Надеюсь понятно выразился.

Цитата:
Сообщение от DIgorevich Посмотреть сообщение
Рисуй с помощью шрифта Arial.
не, нужны разные шрифты.
Изображения
Тип файла: png ee.png (7.8 Кб, 389 просмотров)
Совершенство в простоте

Последний раз редактировалось Stilet; 01.09.2010 в 12:43.
Lemon2009 вне форума Ответить с цитированием
Старый 01.09.2010, 11:47   #4
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Код:
.canvas.font.Name:='ARIAL';
.canvas.font.color:=clRed;
.canvas.TextOut ТВОЙ КОД
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 01.09.2010, 11:51   #5
Lemon2009
Пользователь
 
Аватар для Lemon2009
 
Регистрация: 29.07.2009
Сообщений: 72
По умолчанию

вообщем, что я хочу. я делаю программу с рисованными шрифтами (отдельный файл картинка со шрифтом) и этот файл содержит буквы черного цвета и белый фон. потом когда надо выводить , я заменяю пиксели с черным цветом на нужный и вывожу на экран. но так как иногда получаются серые тона, программа их пропускает. было бы лучше конечно знать алгоритм, про который я выше написал. Ну или хотябы рисовать шрифты без сглаживания.

Цитата:
Сообщение от DIgorevich Посмотреть сообщение
Код:
.canvas.font.Name:='ARIAL';
.canvas.font.color:=clRed;
.canvas.TextOut ТВОЙ КОД
это я знаю. но мне приходится использовать различные шрифты.
Совершенство в простоте

Последний раз редактировалось Stilet; 01.09.2010 в 12:44.
Lemon2009 вне форума Ответить с цитированием
Старый 01.09.2010, 12:04   #6
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

ну, а кто мешает их менять?
Код:
.canvas.font.Name:='ИМЯ ШРИФТА';
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 01.09.2010, 12:19   #7
Lemon2009
Пользователь
 
Аватар для Lemon2009
 
Регистрация: 29.07.2009
Сообщений: 72
По умолчанию

Цитата:
Сообщение от DIgorevich Посмотреть сообщение
ну, а кто мешает их менять?
Код:
.canvas.font.Name:='ИМЯ ШРИФТА';
я вообще использую Canvas.Font := DialogFont.Font;

не в этом ведь дело. Выбирать шрифт я умею.
Просто рисует не как мне надо.
Совершенство в простоте
Lemon2009 вне форума Ответить с цитированием
Старый 01.09.2010, 12:22   #8
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

а как надо? без размазываний? тогда код в студию.
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 01.09.2010, 12:29   #9
Lemon2009
Пользователь
 
Аватар для Lemon2009
 
Регистрация: 29.07.2009
Сообщений: 72
По умолчанию

Код:
procedure TfrmMain.lblFontSelectClick(Sender: TObject);
var
  offY, i, p, j, fW, cW, col: Integer;
  ba: array [0..256] of byte;
  buf: TBitmap;
  alf, fname: String;
  ff: file;
begin
  if dlgFont.Execute then begin
    fname := dlgFont.Font.Name + '_' + IntToStr(dlgFont.Font.Size);
    buf := TBitmap.Create;
    buf.Canvas.Font.Size := dlgFont.Font.Size;
    buf.Canvas.Font.Name := dlgFont.Font.Name;
    alf := '';
    p := 1;
    fW := 0;
    for i := 0 to 255 do begin
      ba[p] := buf.Canvas.TextWidth(chr(i));
      Inc(fW, ba[p]);
      Inc(p);
      alf := alf + chr(i);
    end;
    buf.Width := fW;
    buf.Height := buf.Canvas.TextHeight(alf);
    buf.Canvas.Pen.Color := clGray;
    buf.Canvas.Pen.Style := psSolid;
    buf.Canvas.Pen.Mode := pmBlack;
    buf.Canvas.Brush.Style := bsSolid;
    buf.Canvas.Brush.Color := clWhite;
    for i := 0 to 255 do begin
      cW := 0;
      for j := 0 to i - 1 do cW := cW + ba[j + 1];
      buf.Canvas.TextRect(Rect(cW, 0, cW + ba[i + 1], buf.Height), cW, 0, chr(i));
    end;
    offY := lblFontSelect.Top + lblFontSelect.Height + 10;
    Canvas.Brush.Color := frmMain.Color;
    Canvas.FillRect(Rect(lblFontSelect.Left, offY, Width, Height));
    Canvas.CopyRect(Rect(lblFontSelect.Left, offY, lblFontSelect.Left + buf.Width, offY + buf.Height), buf.Canvas, buf.Canvas.ClipRect);
    //buf.SaveToFile(fname + '.bmp');
    BitmapFileToPNG(buf, fname + '.png');
    AssignFile(ff, fname + '.ssf');
    Rewrite(ff, 1);
    ba[0] := buf.Height;
    BlockWrite(ff, ba, 257);
    CloseFile(ff);
    if IOResult <> 0 then
      ShowMessage('Ошибка записи файла');    
    buf.Destroy;
  end;
end;
Совершенство в простоте
Lemon2009 вне форума Ответить с цитированием
Старый 01.09.2010, 12:35   #10
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Попробуй использовать только векторные шрифты TrueType.
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отрисовка listbox и проблема с textout. DevilMaster Помощь студентам 1 25.01.2012 20:55
canvas и TextOut Lokos Общие вопросы Delphi 1 27.08.2010 08:03
TextOut и DrawText Claster Помощь студентам 3 29.03.2010 18:59
Свой шрифт в TextOut apromix Общие вопросы Delphi 1 17.01.2010 16:34
TextOut xzDelphi Помощь студентам 9 23.10.2007 12:29