forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Отрисовка (http://forum.boolean.name/showthread.php?t=4377)

ar4angel 08.09.2007 12:56

Отрисовка
 
День добрый!

Такой вопрос:
Код:

program test;
var
a:integer;
begin
for a:=1 to 10 do
begin
        drawText(''+a, 0, 0);
        repaint;       
        delay(1000);
        end;
end.

Если запустить мидлет, то текст (цифры) на дисплее будет накладываться друг на дружку...
Что можно сделать, что бы этого наложения не было?

Jet 08.09.2007 13:05

Re: Отрисовка
 
Цитата:

Если запустить мидлет, то текст (цифры) на дисплее будет накладываться друг на дружку...
Что можно сделать, что бы этого наложения не было?
для этого можно для разных букв указывать разные координаты в команде drawText ;)

ar4angel 08.09.2007 14:01

Re: Отрисовка
 
А если нужно отрисовывать текст именно в одной и той же области?
Как можно очистить экран перед повторной отрисовкой?

ViNT 08.09.2007 15:32

Re: Отрисовка
 
Можно так:
Код:

program test;
var
a:integer;
x:integer;
begin
for a:=1 to 10 do
begin
x:=x+getstringwidth(integertostring(a))+2;
drawText(''+a,x, 0);
repaint;
delay(1000);
end;
end.


ar4angel 08.09.2007 18:20

Re: Отрисовка
 
Не, ребят, вы меня не понимаете...
Гляньте на мой пример. Мне нужно, чтобы вместо "1", появиласть "2", затем "3" и т.д. на одном и том же месте.
Т.е. перед отрисовкой следующего числа нужно очистить дисплей.
Как можно вызвать "местный CLS", т.е. просто очистить экран?

dimanche13 08.09.2007 19:13

Re: Отрисовка
 
Перед выводом а, пиши в ту позицию (0,0) пробел.

ar4angel 08.09.2007 19:45

Re: Отрисовка
 
Пишу пробел - ноль эффекта, почему-то...
Код:

program test;
var
a:integer;
begin
for a:=1 to 10 do
begin
drawText(' ',0, 0);
drawText(''+a,0, 0);
repaint;
delay(1000);
end;
end.

В чём проблема может быть?

dimanche13 08.09.2007 19:57

Re: Отрисовка
 
Код:

drawText(' ',0, 0);
repaint;
drawText(''+a,0, 0);
repaint;

может так? а вообще не знаю я МП...

Chrono Syndrome 08.09.2007 19:58

Re: Отрисовка
 
Чисто алгоритмически твоя проблема решается изначальной закраской фоном участка, на котором выводится текст. Ммм... в MidletPascal'е есть процедуры для отрисовки закрашенных прямоугольников ?

ar4angel 08.09.2007 19:59

Re: Отрисовка
 
В общем, вот чего изобрёл:
Код:

program test;
var
a:integer;
begin
for a:=1 to 10 do
begin
setColor(0,0,0);
drawText(''+a,0, 0);
repaint;
delay(1000);
{MyRepaint}
setColor(255,255,255);
fillRect(0,0,getWidth,getHeight);
 
end;
end.

Всем спасибо за внимание! :)

dimanche13 08.09.2007 20:02

Re: Отрисовка
 
Мдяааа, жёсткий язык, этот мидлет паскаль)))

Chrono Syndrome 08.09.2007 20:05

Re: Отрисовка
 
Цитата:

drawText(''+a,0, 0);
Кстати, а что это за дикая конструкция такая) ?

ar4angel 08.09.2007 20:20

Re: Отрисовка
 
Тоже моё изобретение...
У меня практически никакого опыта в программировании, поэтому не знаю как вывести на дисплей Integer.
Если оставить только:
Код:

drawText(a,0, 0);
- MP ругается: "error on parameter 1".
Может тогда разъясните, как вывести на дисплей число "без извращений"? :)

ViNT 08.09.2007 20:25

Re: Отрисовка
 
Цитата:

Сообщение от Chrono Syndrome
Кстати, а что это за дикая конструкция такая) ?

Если написать просто "a" то получится ошибка с типом параметра, а если написать так, то он склеит '' и "a", автоматически преобразовав "a" в строку. Так же, как writeln(a) в TP.

Цитата:

Может тогда разъясните, как вывести на дисплей число "без извращений"?
Без извращений не получится :).
Либо
Код:

drawText(''+a,0, 0);
либо
Код:

drawText(Integertostring(a),0, 0);
Второй метод-наиболее стандартный.

Chrono Syndrome 08.09.2007 21:08

Re: Отрисовка
 
Цитата:

Если написать просто "a" то получится ошибка с типом параметра, а если написать так, то он склеит '' и "a", автоматически преобразовав "a" в строку.
КрЫсота... (C)
Не, ну создатели этого Мидлета уж определились бы как-нибудь: у ихнего детища строгая типизация или нет) ?

ViNT 08.09.2007 21:34

Re: Отрисовка
 
Цитата:

Сообщение от Chrono Syndrome
КрЫсота... (C)
Не, ну создатели этого Мидлета уж определились бы как-нибудь: у ихнего детища строгая типизация или нет) ?

В TP7 можно писать так:
Код:

var i:integer;
begin
writeln(i,'text');
end.

А можно так:
Код:

var i:integer;
s:string;
begin
str(i,s);{аналог IntegerToString}
writeln(s+'text');
end.

Но нельзя написать
Код:

var i:integer;
s:string;
begin
s:=s+i;
end.

В MP такая операция допустима, но писать
Код:

drawtext(i,0,0);
Нельзя.

В общем, сплошные извращения.

odd 10.09.2007 08:34

Re: Отрисовка
 
Короче, юзай либо
Код:

IntegerToString(i)
либо в твоём случае ещё подойдет
Код:

chr(i+48)
Никаких извращений тут нет. Извращения начинаются когда нужно вывести на экран число с плавающей точкой.


Часовой пояс GMT +4, время: 21:45.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot