Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.06;
Скачать: CL | DM;

Вниз

Рисование на канве Image   Найти похожие ветки 

 
kyn66   (2007-12-10 16:30) [0]

На форме есть Image1 размером 168х320 pix. Пытаюсь в цикле на канву вывести шрифт. Почему не рисуется на канве?

...
    for y := 5 to 10 do
  Image1.Canvas.TextOut(5 , y, chr(y));
...


 
Efir   (2007-12-10 16:36) [1]

Прежде чем писать такой код следует заглянуть в таблицу ASCII и увидеть, что букав таких нету. А начинаюся они с кода 32.


 
KSergey ©   (2007-12-10 16:44) [2]

> kyn66   (10.12.07 16:30)  
>     for y := 5 to 10 do
>   Image1.Canvas.TextOut(5 , y, chr(y));

Смещаться на 1 пиксель для вывода очередной буквы - маловато будет, однако. Ну в смысле - буквы наложатся одна на другую.
Хотя, конечно, Efir  прав по поводу основнй причины.


 
kyn66   (2007-12-10 16:49) [3]

>> Efir  
Немного ошибся, просто хотел пример по быстрому привести

for y := 32 to 35 do
  Image1.Canvas.TextOut(5 , y + 32, chr(y));


 
Eraser ©   (2007-12-10 16:50) [4]


> kyn66   (10.12.07 16:30) 

imho, скорее всего, помимо ошибки в алгоритме, вы не там рисуете. Рисовать можно либо на Image1.Picture.Bitmap.Canvas либо на битмапе в памяти, а отображать через WM_PAINT (OnPaint) какого-нибудь оконного контрола. В общем случае, второй вариант правильнее. У вас ни тот, ни другой.


 
kyn66   (2007-12-10 16:54) [5]

Дело в том, что рисует, только один символ. Почему в цикле не рисует.Есть другой вариант, рисует все символу, но в одну строку, а мен нужно 16х14

...
w := 0
For i:=32 to 255 do
  Begin
    Image1.Canvas.TextOut(w , 0, chr(i));
    w := w + StringGrid1.Canvas.TextWidth(chr(i));
  end;
...


 
{RASkov} ©   (2007-12-10 16:58) [6]

> [5] kyn66   (10.12.07 16:54)

Сделай два цикла... один вложеный в другой...


 
homm ©   (2007-12-10 17:00) [7]

> [5] kyn66   (10.12.07 16:54)
> Дело в том, что рисует, только один символ.

Ах вот оно что :)

for y := 0 to 3 do
 Image1.Canvas.TextOut(5 , y * 32, chr(y+32));


 
kyn66   (2007-12-10 17:06) [8]


> for y := 0 to 3 do  Image1.Canvas.TextOut(5 , y * 32, chr(y+32));

так вааще ни одного 8-(


 
kyn66   (2007-12-10 17:12) [9]


> Сделай два цикла... один вложеный в другой...

Это просто пример для показа здесь. Полный текс вааще такой:

  Image1.Picture.Bitmap.Width := 180;
  Image1.Picture.Bitmap.Height := 320;
  for y:= 0 to 13 do
   for x:= 0 to 15 do
    begin
       fnt := y * 16 + x + 32;
     Image1.Canvas.TextOut(x , y, chr(fnt));
   end;


А на выходе тока 1 символ "Я"


 
{RASkov} ©   (2007-12-10 17:13) [10]

> [9] kyn66   (10.12.07 17:12)

procedure TForm1.Button1Click(Sender: TObject);
var R, C, W, H, Chw, Chh: Integer; Ch: Byte;
begin
 Chw:=Canvas.TextWidth("W")+5;
 Chh:=Canvas.TextHeight("W")+2;
 for C:=0 to 15 do
  for R:=0 to 13 do begin
   Ch:=32+((16*R)+C);
   W:=Chw*C;
   H:=Chh*R;
   Canvas.TextOut(W, H, CHR(Ch));
  end;
end;


 
{RASkov} ©   (2007-12-10 17:16) [11]

> [9] kyn66   (10.12.07 17:12)
> А на выходе тока 1 символ "Я"

А подумать????
У тебя чему равны X и Y?


 
kyn66   (2007-12-10 17:26) [12]

вроде похоже, но ешшо не то, какой-то он обрезаный получился
http://yurec66.narod.ru/Vopros/arial.png


 
{RASkov} ©   (2007-12-10 17:56) [13]

> [12] kyn66   (10.12.07 17:26)

Размеры Image"су "не правильные" задаешь....
Я же тебе пример вывода на канву формы сделал.... а уж размер общего прямоугольника посчитать, я думаю сам сожешь....
Также +5 и +2 можешь убрать, это я для лучшего восприятия сделал :)


 
kyn66   (2007-12-10 17:59) [14]

Спасибо, попробую разбираться сам


 
{RASkov} ©   (2007-12-10 18:06) [15]

> [0] kyn66   (10.12.07 16:30)
> размером 168х320 pix

или тебе именно в этот рект нужно "загнать"?
Тогда алгорит сменится... Немного не так должно быть, но не намного сложнее....


 
kyn66   (2007-12-11 09:23) [16]

Нет, все окейно, я действительно ошибся с назначением размера имагеса, все работает, спасибо !



Страницы: 1 вся ветка

Текущий архив: 2008.01.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.025 c
2-1197287226
ZLinX
2007-12-10 14:47
2008.01.06
Поиск путей в графе


2-1197363838
Molodoi
2007-12-11 12:03
2008.01.06
DBGridEh


15-1196685094
ArtemESC
2007-12-03 15:31
2008.01.06
Новая больная идея!!!


15-1196609516
Piter
2007-12-02 18:31
2008.01.06
Образы двухслойных дисков и программа ImgBurn


8-1171741173
SONIC90
2007-02-17 22:39
2008.01.06
MediaPlayer On Notify