Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу Как перевести текст в пиксели
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Jackal Jackal вне форума
Member
 
Сообщений: 28
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.02.2005
По умолчанию Как перевести текст в пиксели - 20.02.2005, 05:33

Привет, Всем! У меня такая трабла как перевести текст в пиксели?
Т.е. в TEdit'е пишем текст и/или букву. Затем загоняем ее в масив, скорее всего он должен быть двумерным, в виде пикселей, а затем отрисовываем его на, скажем, форме или любом другом компоненте (кроме текстовых).
Ответить с цитированием
  (#2 (permalink)) Старый
Jackal Jackal вне форума
Member
 
Сообщений: 28
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.02.2005
По умолчанию Как перевести текст в пиксели - 20.02.2005, 05:33

Привет, Всем! У меня такая трабла как перевести текст в пиксели?
Т.е. в TEdit'е пишем текст и/или букву. Затем загоняем ее в масив, скорее всего он должен быть двумерным, в виде пикселей, а затем отрисовываем его на, скажем, форме или любом другом компоненте (кроме текстовых).
Ответить с цитированием
  (#3 (permalink)) Старый
cirill cirill вне форума
Member
 
Сообщений: 34
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.06.2004
По умолчанию 20.02.2005, 13:21

Единственное что приходит на ум - это создать объект TBitmap в нем св-во Canvas сначала туда записать текст, потом считать его по пикселям.
Ответить с цитированием
  (#4 (permalink)) Старый
cirill cirill вне форума
Member
 
Сообщений: 34
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.06.2004
По умолчанию 20.02.2005, 13:21

Единственное что приходит на ум - это создать объект TBitmap в нем св-во Canvas сначала туда записать текст, потом считать его по пикселям.
Ответить с цитированием
  (#5 (permalink)) Старый
Jackal Jackal вне форума
Member
 
Сообщений: 28
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.02.2005
По умолчанию 20.02.2005, 13:32

Это я уже зделал, примерно так подсказывают:
Код:
img->Canvas->Font->Size = 20; 
    int h = img->Canvas->TextHeight(Edit1->Text); 
    int w = img->Canvas->TextWidth(Edit1->Text); 
    img->Canvas->TextOut(0, 0, Edit1->Text); 
    for (int x = 0; x < w; x++) 
    { 
        for (int y = 0; y < h; y++) 
        { 
            if (img->Canvas->Pixels[x][y] != clWhite) 
            { 
                img->Canvas->Font->Size = 10; 
                img->Canvas->TextOut(30 + x*12, y*12, "#"); 
            } 
        } 
    }
Но хотелось бы отрисовывать на DrawGrid'е, каждый пиксел - одна ячейка - тока руки не доходят...
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Jackal Jackal вне форума
Member
 
Сообщений: 28
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.02.2005
По умолчанию 20.02.2005, 13:32

Это я уже зделал, примерно так подсказывают:
Код:
img->Canvas->Font->Size = 20; 
    int h = img->Canvas->TextHeight(Edit1->Text); 
    int w = img->Canvas->TextWidth(Edit1->Text); 
    img->Canvas->TextOut(0, 0, Edit1->Text); 
    for (int x = 0; x < w; x++) 
    { 
        for (int y = 0; y < h; y++) 
        { 
            if (img->Canvas->Pixels[x][y] != clWhite) 
            { 
                img->Canvas->Font->Size = 10; 
                img->Canvas->TextOut(30 + x*12, y*12, "#"); 
            } 
        } 
    }
Но хотелось бы отрисовывать на DrawGrid'е, каждый пиксел - одна ячейка - тока руки не доходят...
Ответить с цитированием
  (#7 (permalink)) Старый
cirill cirill вне форума
Member
 
Сообщений: 34
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.06.2004
По умолчанию 20.02.2005, 13:36

А в чем проблема! Берешь свойство TDrawGrid::OnCellDraw (по-моему). Там тебе передаются номер колонки, строки и куда наро рисовать. Берёш из массива и рисуешь.
Ответить с цитированием
  (#8 (permalink)) Старый
cirill cirill вне форума
Member
 
Сообщений: 34
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.06.2004
По умолчанию 20.02.2005, 13:36

А в чем проблема! Берешь свойство TDrawGrid::OnCellDraw (по-моему). Там тебе передаются номер колонки, строки и куда наро рисовать. Берёш из массива и рисуешь.
Ответить с цитированием
  (#9 (permalink)) Старый
Jackal Jackal вне форума
Member
 
Сообщений: 28
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.02.2005
По умолчанию 20.02.2005, 13:48

я так и делал, но отрисовка происходит как на обычном canvas'е
Ответить с цитированием
  (#10 (permalink)) Старый
Jackal Jackal вне форума
Member
 
Сообщений: 28
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.02.2005
По умолчанию 20.02.2005, 13:48

я так и делал, но отрисовка происходит как на обычном canvas'е
Ответить с цитированием
  (#11 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 6,725
Сказал(а) спасибо: 15
Поблагодарили 806 раз(а) в 791 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 20.02.2005, 20:28

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

Есть только проблема с фичей винды ClearType и с её отсутствием тоже.
Ответить с цитированием
  (#12 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 6,725
Сказал(а) спасибо: 15
Поблагодарили 806 раз(а) в 791 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 20.02.2005, 20:28

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

Есть только проблема с фичей винды ClearType и с её отсутствием тоже.
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
Jackal Jackal вне форума
Member
 
Сообщений: 28
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.02.2005
По умолчанию 24.02.2005, 15:27

Пробовал...неполучаецца...
Каждая буква ограничивается размером 5х7, т.е. 5 ячеек ширина и 7 ячеек высота буквы на DrawGrid'е. Все предложенные варианты выходят за пределы этих значений... Может еще как-то мона зделать?
Ответить с цитированием
  (#14 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 6,725
Сказал(а) спасибо: 15
Поблагодарили 806 раз(а) в 791 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 24.02.2005, 16:22

Какие варианты выходят за какие пределы? Поподробнее.
Если имеется в виду, что надо получить матрицы 5x7 из виндовых шрифтов, то забудь. Число шрифтов, хорошо выглядящих при таких размерах мизерно. Легче самому нарисовать.

Вот фрагмент кода перевода фонта в массив точек у меня:
Код:
 if(bitmap == NULL) bitmap = new Graphics::TBitmap();
 bitmap->Width = width;
 bitmap->Height = height;
 DG->ColCount = width;
 DG->RowCount = height;
 TCanvas *canvas = bitmap->Canvas;

 canvas->Font->Assign(font);
 canvas->Brush->Style = bsSolid;
 canvas->Brush->Color = clWhite;
 canvas->Font->Color = clBlack;
 for(int i = 32; i<=255; i++)
 {
  ProgBar->Position = i - 32;
  ProgBar->Update();

  canvas->FillRect(TRect(0, 0, width, height));
  if(index == 0) canvas->TextOutA(0,0,(char)i);//если index == 0
  for(int x = 0; x<width; x++)
   for(int y = 0; y<height; y++)
   {
    rgb_color1.color = canvas->Pixels[x][y];
    if(index == 0 &&  rgb_color1.rgb1.Red<redcolor && rgb_color1.rgb1.Green<greencolor && rgb_color1.rgb1.Blue<bluecolor) fmas[x][y][i-32] = true;
    else fmas[x][y][i-32] = false;
   }
 }
Вот прорисовка его из массива на DrawGrid:
Код:
//---------------------------------------------------------------------------
void __fastcall TFormMain::DGDrawCell(TObject *Sender, int ACol, int ARow,
      TRect &Rect, TGridDrawState State)
{
 if(fmas != NULL && sym>=32)
 {
  TColor cl;
  if(fmas[ACol][ARow][sym-32] == true) cl = clBlack;
  else cl = clWhite;

  DG->Canvas->Brush->Color = cl;
  DG->Canvas->FillRect(Rect);
 }
}
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод координат городов в пиксели dubin Алгоритмы 10 26.06.2015 13:17
Битые пиксели Dozza Любые вопросы от новичков 1 10.11.2011 18:48
Как перевести число в текст Надежда К Visual Basic 1 12.04.2011 16:17
Разложить пиксели в картинке imported_Dante Вопросы начинающих программистов 5 03.03.2010 01:01
Дефектные пиксели на мониторе alex6524 Мониторы 5 09.12.2008 12:42
Закрашиваем пиксели как это сделать Iv@nich C++ Builder 4 19.04.2008 20:35
Как перевести текст Кошмар Python 1 28.02.2008 13:20
Битые пиксели vitatusik Ноутбуки 3 22.08.2007 20:22
Как перевести текст в второй код Rever Вопросы начинающих программистов 2 22.04.2005 17:31
Как перевести point.x в текст, чтобы можно использовать в TextOut imported_Yak Вопросы начинающих программистов 4 03.11.2004 17:02
Люди!Помогите перевести текст с Дельфи на С++ uran238 C++ Builder 1 14.07.2004 12:40
Как в С текст на русском языке перевести в верхний регистр Anonymous С/С++ 5 22.08.2003 14:28



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов