Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Text -> Pixels -> Paint 
:(
    Опции темы
Jackal
Дата 20.2.2005, 04:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 8.2.2005
Где: Находка

Репутация: нет
Всего: нет



Привет, Всем! У меня такая трабла как перевести текст в пиксели? smile
Т.е. в TEdit'е пишем текст и/или букву. Затем загоняем ее в масив, скорее всего он должен быть двумерным, в виде пикселей, а затем отрисовываем его на, скажем, форме или любом другом компоненте (кроме текстовых). smile
PM MAIL ICQ   Вверх
_hunter
Дата 20.2.2005, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



DrawText() тебе поможет


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Бегемот
Дата 20.2.2005, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 26.1.2005
Где: На границе Европы и Азии

Репутация: 1
Всего: 3



Если я всё правильно понял, то можно сделать вот так
Код

TColor color[281][21];  //281 - это Width компонента Edit;
                        //21 - это Height компонента Edit;
HDC hDC_Edit,hDC_Form;
int w,h;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 hDC_Edit = GetWindowDC(Edit1->Handle); //получаем HDC Edit и Form
 hDC_Form = GetWindowDC(Form1->Handle);
 w = Edit1->Width;                      //закидываем в переменные w и h    размеры Edit
 h = Edit1->Height;
 Canvas->Font->Color = clBlack;         //устанавливаем цвет шрифта    
 Canvas->Brush->Color = Form1->Color;    //это...
 Canvas->Pen->Color = Form1->Color;     // ..и это нам пригодится позже
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
//вывод текста на форму производится при нажатии в поле Edit клавиши ENTER
 if (Key == VK_RETURN)
 {
//сначало мы получаем все пиксели Edit и записываем их в массив...
  for(int i=0; i<w; i++)
    for(int j=0; j<h; j++)
      color[i][j] = GetPixel(hDC_Edit,i,j);
//..затем стераем всё то, что нахулиганили с прошлого ввода..
  Canvas->Rectangle(50,50,w,h);
//...а уж затем выводим на Form в нужное место...
  for(int i=0; i<w; i++)
    for(int j=0; j<h; j++)
//...при этом выводим только лишь те пиксели, цвет которых совпадает с цветом шрифта
      if (color[i][j] == Canvas->Font->Color)
        SetPixel(hDC_Form,i+50,j+50,color[i][j]);
 }
}

smile
PM MAIL   Вверх
Jackal
Дата 20.2.2005, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 8.2.2005
Где: Находка

Репутация: нет
Всего: нет



и так, и не так...
Хоцца отрисовывать на DrawGrid'е, каждый пиксел - одна ячейка.
Цитата
А в чем проблема! Берешь свойство TDrawGrid::OnCellDraw (по-моему). Там тебе передаются номер колонки, строки и куда наро рисовать. Берёш из массива и рисуешь.

я так и делал, но отрисовка происходит как на обычном canvas'е

PM MAIL ICQ   Вверх
Бегемот
Дата 20.2.2005, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 26.1.2005
Где: На границе Европы и Азии

Репутация: 1
Всего: 3



Что-то я совсем запутался! smile
Цитата
отрисовка происходит как на обычном canvas'е

Как это понимать???
PM MAIL   Вверх
Borisff2003
Дата 21.2.2005, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 26.2.2004
Где: г. Уфа

Репутация: нет
Всего: 1



Если правильно тебя понял

Отрисуй текст гденибудь на канвасе, а потом читай оттуда пиксели и закрашивай соответствующие ячейки в DrawGrid.

--------------------
Лень, двигатель прогресса
PM MAIL WWW ICQ   Вверх
Бегемот
Дата 22.2.2005, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 26.1.2005
Где: На границе Европы и Азии

Репутация: 1
Всего: 3



Цитата
Хоцца отрисовывать на DrawGrid'е, каждый пиксел - одна ячейка.

Попробуй этот вариант. smile
Код

TColor color[100][20];
HDC hDC_Edit;
int w,h;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 hDC_Edit = GetWindowDC(Edit1->Handle);

 Form1->ClientWidth = 600;
 Form1->ClientHeight = 400;
 Canvas->Font->Color = clBlack;

 DrawGrid1->Width = Form1->ClientWidth;
 DrawGrid1->Height = Form1->ClientHeight-90;
 DrawGrid1->DefaultColWidth = 5;
 DrawGrid1->DefaultRowHeight = 5;
 DrawGrid1->ColCount = 100;
 DrawGrid1->RowCount = 50;

 Edit1->Width = 100;  w = Edit1->Width;
 Edit1->Height = 20;  h = Edit1->Height;
 Edit1->Top = Form1->ClientHeight - h;
 Edit1->AutoSelect = false;
}
//---------------------------------------------------------------------------
TRect r;
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
 if (Key == VK_RETURN)
 {
  for(int i=0; i<w; i++)
    for(int j=0; j<h; j++)
      color[i][j] = GetPixel(hDC_Edit,i,j);
  for(int i=0; i<w; i++)
    for(int j=0; j<h; j++)
      if (color[i][j] == Canvas->Font->Color)
      {
        r = DrawGrid1->CellRect(i,j);
        DrawGrid1->Canvas->Brush->Color = clBlack;
        DrawGrid1->Canvas->Rectangle(r);
      }
 }
}
smile
PM MAIL   Вверх
Jackal
Дата 24.2.2005, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 8.2.2005
Где: Находка

Репутация: нет
Всего: нет



Цитата(rewerew @ 23.2.2005, 02:02)
Цитата
Хоцца отрисовывать на DrawGrid'е, каждый пиксел - одна ячейка.

Попробуй этот вариант. smile
Код

TColor color[100][20];
HDC hDC_Edit;
int w,h;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 hDC_Edit = GetWindowDC(Edit1->Handle);

 Form1->ClientWidth = 600;
 Form1->ClientHeight = 400;
 Canvas->Font->Color = clBlack;

 DrawGrid1->Width = Form1->ClientWidth;
 DrawGrid1->Height = Form1->ClientHeight-90;
 DrawGrid1->DefaultColWidth = 5;
 DrawGrid1->DefaultRowHeight = 5;
 DrawGrid1->ColCount = 100;
 DrawGrid1->RowCount = 50;

 Edit1->Width = 100;  w = Edit1->Width;
 Edit1->Height = 20;  h = Edit1->Height;
 Edit1->Top = Form1->ClientHeight - h;
 Edit1->AutoSelect = false;
}
//---------------------------------------------------------------------------
TRect r;
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
 if (Key == VK_RETURN)
 {
  for(int i=0; i<w; i++)
    for(int j=0; j<h; j++)
      color[i][j] = GetPixel(hDC_Edit,i,j);
  for(int i=0; i<w; i++)
    for(int j=0; j<h; j++)
      if (color[i][j] == Canvas->Font->Color)
      {
        r = DrawGrid1->CellRect(i,j);
        DrawGrid1->Canvas->Brush->Color = clBlack;
        DrawGrid1->Canvas->Rectangle(r);
      }
 }
}
smile

Пробовал...неполучаецца...
Каждая буква ограничивается размером 5х7, т.е. 5 ячеек ширина и 7 ячеек высота буквы на DrawGrid'е. Все предложенные варианты выходят за пределы этих значений... Может еще как-то мона зделать?
PM MAIL ICQ   Вверх
Бегемот
Дата 24.2.2005, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 26.1.2005
Где: На границе Европы и Азии

Репутация: 1
Всего: 3



Сколько мы уже тут чего-то делаем, а я до сих пор непойму чего ты хочешь сделать-то!!!
Сначало ты пишешь... smile
Цитата
У меня такая трабла как перевести текст в пиксели? 
Т.е. в TEdit'е пишем текст и/или букву. Затем загоняем ее в масив, скорее всего он должен быть двумерным, в виде пикселей, а затем отрисовываем его на, скажем, форме или любом другом компоненте (кроме текстовых).

Я тебе пишу код, который загоняет текст в массив, именно двумерный, причём именно в виде пикселей,а затем отрисовывает его на форме.
После чего ты пишешь... smile
Цитата
Хоцца отрисовывать на DrawGrid'е, каждый пиксел - одна ячейка.

Тогда я изменяю код, в результате чего каждый,занесённый в массив ,пиксел, каждого символа, введённого в Edit, отрисовывается на DrawGrid, занимая при этом одну ячейку
А теперь ты пишешь...
Цитата
Пробовал...неполучаецца...

...и пишешь какие-то новые условия
Цитата
Каждая буква ограничивается размером 5х7, т.е. 5 ячеек ширина и 7 ячеек высота буквы на DrawGrid'е. Все предложенные варианты выходят за пределы этих значений...

А зачем тебе нужно ограничевать размер буквы на DrawGrid'e? Буквы сами по себе разных размеров(имею ввиду в пикселях по ширине и по высоте)?
Да нет, я не ругаюсь! smile Я тебе правда хочу помочь, вот только не могу понять чего делать-то. smile

PM MAIL   Вверх
Borisff2003
Дата 25.2.2005, 06:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 26.2.2004
Где: г. Уфа

Репутация: нет
Всего: 1



В приведенном примере, поставь маленький размер шрифта
--------------------
Лень, двигатель прогресса
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0817 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.