Форум: "Начинающим";
Текущий архив: 2008.01.06;
Скачать: [xml.tar.bz2];
ВнизРисование на канве 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c