Проблема возникла там где не ждали....
Необходимо в графическом режиме вывести текст верх ногами, и боком, не сверху вниз, а именно боком... процедуры такой я в модуле Graph не нашол(может плохо искал?), но надобность существует, без этого никак не обойтись, ...
Выводить нужно лишь цыфры и знак $.
Подскажите как можна решить подобную проблему?
хотя насчет вверх ногами наверно можна и без этого....
Но боком всёрамно нужно...
У Фаронова в модуле F_GRTEXT.PAS есть процедура OutString, которая может выводить текст под любым углом.
uses graph;А теперь скажи, оно тебе надо? Ты опять зацикливаешься на мелочах. У Фаронова уже есть решение, что тебе мешает его использовать? Когда перейдешь на Дельфи, то VCL тоже будешь переписывать сам, чтоб чужими наработками не пользоваться? Глупо. Так ты свою Монополию будешь годами писать. Ну, в принципе, дело твое... Хочешь - линиями рисуй, хочешь вообще поточечно...
type
angle = (_90, _180, _270);
var
gd, gm, err: integer;
s: string;
images: array[1 .. 11, angle] of pointer;
centerx, centery, width, height: integer;
i, X, Y, dx, dy: integer;
begin
initgraph(gd, gm, '');
err := graphresult;
if err <> grok then begin
writeln('error: ' + grapherrormsg(err));
readln; halt(100);
end;
s := '0123456789$';
centerx := getmaxx div 2; centery := getmaxy div 2;
width := textwidth('W') + 4; height := textheight('W') + 4;
settextjustify(centertext, centertext);
for i := 1 to length(s) do begin
cleardevice;
outtextxy(getmaxx div 2, getmaxy div 2, s[i]);
{ 1: 90 degrees clockwise }
dy := 0;
for x := centerx - (width div 2) to centerx + (width div 2) do begin
dx := 0;
for y := centery + (height div 2) downto centery - (height div 2) do
begin
putpixel(25 + dx, 25 + dy, getpixel(x, y)); inc(dx);
end;
inc(dy);
end;
{ 2: 180 degrees }
dx := 0;
for x := centerx + (width div 2) downto centerx - (width div 2) do begin
dy := 0;
for y := centery + (height div 2) downto centery - (height div 2) do
begin
putpixel(50 + dx, 25 + dy, getpixel(x, y)); inc(dy);
end;
inc(dx);
end;
{ 3: 270 degrees clockwise }
dy := 0;
for x := centerx + (width div 2) downto centerx - (width div 2) do begin
dx := 0;
for y := centery - (height div 2) to centery + (height div 2) do
begin
putpixel(75 + dx, 25 + dy, getpixel(x, y)); inc(dx);
end;
inc(dy);
end;
readln;
end;
closegraph;
end.
Если надо - вот еще один велосипед, гораздо более компактный, чем предыдущий, и полностью работоспособный:
возникла ещё одна неувязочка с этой процедурой , дело в том, что цыфры матричным шрифтом 1 размера оказались несколько большеватыми... а самостоятельно я несмог изменить стиль текста выводимого этой процедурой, додумался только как цвет менять, а вот стиль - никак
Вобщем volvo я опять нуждаюсь в вашей помощи
Идеальный вариант для меня - уменьшеный шрифт(с номером 2), и размер 4... другие шрифты или размер мне для этой процедуры уже не понадобятся.
Мне не особо хочется розбираться в этой процедуре, ибо я в ней половину кода непонимаю , да и думаю оно мне ненужно пока, понимать всё это, но вот сама процедура мне нужна...
Это ты сейчас про какую процедуру? Из 5-го поста, или все-таки у Фаронова? Что такое "уменьшенный шрифт (с номером 2)"? Что за "размер 4"?
Я не телепат, приводи код, который выводит то, что НЕ подходит, и показывай, что именно и насколько надо уменьшить. Миелофон в ремонте.
type
TAngle = (ang_0, ang_90, ang_180, ang_270);
TPutProc = procedure(var px, py: integer; ch: char);
procedure PrintString(angle: TAngle; px, py: integer; s: string);
...
SetTextStyle(2,0,4);4 - размер, а номер шрифта - 2;
Впринципе вопрос можна считать решённым: попробовал я рисовать их не крутя - вышло не настолько ужасно чтобы сбрасывать этот вариант со счетов, очень даже нормально...