IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Вывод текста боком и вверх ногами, в графическом режиме...
сообщение
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 346
Пол: Мужской
Реальное имя: Иван

Репутация: -  7  +


Проблема возникла там где не ждали....
Необходимо в графическом режиме вывести текст верх ногами, и боком, не сверху вниз, а именно боком... процедуры такой я в модуле Graph не нашол(может плохо искал?), но надобность существует, без этого никак не обойтись, ...
Выводить нужно лишь цыфры и знак $.
Подскажите как можна решить подобную проблему? unsure.gif

хотя насчет вверх ногами наверно можна и без этого....
Но боком всёрамно нужно...

Сообщение отредактировано: RathaR -


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






У Фаронова в модуле F_GRTEXT.PAS есть процедура OutString, которая может выводить текст под любым углом.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Знаток
****

Группа: Пользователи
Сообщений: 346
Пол: Мужской
Реальное имя: Иван

Репутация: -  7  +


Цитата(volvo @ 13.08.2009 11:54) *

У Фаронова в модуле F_GRTEXT.PAS есть процедура OutString, которая может выводить текст под любым углом.

погуглил, нашел, скачал... но для меня неприемлимо подключать "левый" модуль, тимболее ради одной процедуры, вся программа должна быть написана мною, а розбирать в том модуле одну процедуру, самому переписывать, - черт ногу сломит.
Сам задачу поставил и сам путь к решению закрыл....
Мне нужно всегото на поле в "Монополии" подписать стоимости участков на каждом секторе, но секторы розположены в форме прямоугольника, и соответственно некоторые надписи должны быть повёрнуты боком... и еще пару знаков вопросов боком повернуть (чтоб не рисовать знак вопроса фигурами) - несколько секторов (шанс) обозначаються знаками вопросов.
Я и незнаю как быть... рисовать цыфры линиями чтоли...


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
а розбирать в том модуле одну процедуру, самому переписывать, - черт ногу сломит.
Ну во-первых, изобретение велосипеда здесь не надо... Мало ли чего нет в модуле Graph... Добавляешь функционал. Я бы включил прямо модуль f_grtext целиком, если бы столкнулся с такой проблемой. Все равно без написания своих модулей при программировании Монополии (да еще с прицелом на обучение) ты не обойдешься. Какая разница, подключать 2 модуля или 3?

Если хочется все-таки изобрести велосипед - вот тебе набросок. Обрати внимание: в программе есть массив, куда можно выделить память и сохранить образы перевернутых символов (через GetMem + GetImage). А потом, при необходимости вывести "перевернутую" строку, надо будет посимвольно делать PutImage, каждый раз высчитывая позицию очередного символа...

uses graph;
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.
А теперь скажи, оно тебе надо? Ты опять зацикливаешься на мелочах. У Фаронова уже есть решение, что тебе мешает его использовать? Когда перейдешь на Дельфи, то VCL тоже будешь переписывать сам, чтоб чужими наработками не пользоваться? Глупо. Так ты свою Монополию будешь годами писать. Ну, в принципе, дело твое... Хочешь - линиями рисуй, хочешь вообще поточечно...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Если надо - вот еще один велосипед, гораздо более компактный, чем предыдущий, и полностью работоспособный:

Спойлер (Показать/Скрыть)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Знаток
****

Группа: Пользователи
Сообщений: 346
Пол: Мужской
Реальное имя: Иван

Репутация: -  7  +


Цитата(volvo @ 14.08.2009 20:09) *

Если надо - вот еще один велосипед, гораздо более компактный, чем предыдущий, и полностью работоспособный:

good.gif - то что надо smile.gif
спасиба!



--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Знаток
****

Группа: Пользователи
Сообщений: 346
Пол: Мужской
Реальное имя: Иван

Репутация: -  7  +


возникла ещё одна неувязочка с этой процедурой unsure.gif , дело в том, что цыфры матричным шрифтом 1 размера оказались несколько большеватыми... а самостоятельно я несмог изменить стиль текста выводимого этой процедурой, додумался только как цвет менять, а вот стиль - никак rolleyes.gif
Вобщем volvo я опять нуждаюсь в вашей помощи rolleyes.gif
Идеальный вариант для меня - уменьшеный шрифт(с номером 2), и размер 4... другие шрифты или размер мне для этой процедуры уже не понадобятся.
Мне не особо хочется розбираться в этой процедуре, ибо я в ней половину кода непонимаю smile.gif , да и думаю оно мне ненужно пока, понимать всё это, но вот сама процедура мне нужна...


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Это ты сейчас про какую процедуру? Из 5-го поста, или все-таки у Фаронова? Что такое "уменьшенный шрифт (с номером 2)"? Что за "размер 4"?

Я не телепат, приводи код, который выводит то, что НЕ подходит, и показывай, что именно и насколько надо уменьшить. Миелофон в ремонте.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Знаток
****

Группа: Пользователи
Сообщений: 346
Пол: Мужской
Реальное имя: Иван

Репутация: -  7  +


Цитата(volvo @ 19.08.2009 21:04) *

Это ты сейчас про какую процедуру? Из 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;

Сообщение отредактировано: volvo -


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Цитата
нужно чтобы выводило текст следующим стилем:
Это невозможно. Я реализовал стандартный шрифт 8*14 пикселей, а не векторный шрифт из BGI. Единственное, что можно сделать - это шрифт 8*8, который будет почти в 2 раза меньше в высоту. Если надо - сделаю. Больше по этой теме ко мне можешь не обращаться, делать ничего не буду. Изобретать свой векторный шрифт только из-за того, что тебе лень разбираться в коде и сделать что-либо самостоятельно, мне тоже лень. Задание твое - делай...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Знаток
****

Группа: Пользователи
Сообщений: 346
Пол: Мужской
Реальное имя: Иван

Репутация: -  7  +


Цитата(volvo @ 19.08.2009 21:26) *

Это невозможно. Я реализовал стандартный шрифт 8*14 пикселей, а не векторный шрифт из BGI. Единственное, что можно сделать - это шрифт 8*8, который будет почти в 2 раза меньше в высоту. Если надо - сделаю. Больше по этой теме ко мне можешь не обращаться, делать ничего не буду. Изобретать свой векторный шрифт только из-за того, что тебе лень разбираться в коде и сделать что-либо самостоятельно, мне тоже лень. Задание твое - делай...

Насчёт "невозможно" - очень жаль, я этого предположить не мог.
Насчёт 8*8 я сам поробую розобраться, может чтото и выйдет.
Насчёт "лень разбираться в коде" - это абсолютно нетак... я немог предугадать, что для такой незначительной вещи придётся прилагать такие усилия по реализации, и даже то что это просто "невозможно". Монополия - моя первая программа (даже не игра) с графикой, поэтому во всём приходиться розбираться, в чём-то с трудом, в чём-то на примерах, но в большинстве - методом проб и ошибок.
Поэтому я и сказал, что невижу смысла розбирать код процедуры Фаронова, он в любом случае для меня непостижимо сложен, а если и не так, то для того чтобы его "освоить" или розобрать, пришлось бы приложить усилия, которые несравнимы с результатом...
ну и если нельзя вывести векторный шрифт таким способом, то я конечно извиняюсь что доставил столько хлопот dry.gif ибо я этого не предполагал - буду решать "своё задание" альтернативными путями

Сообщение отредактировано: RathaR -


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Цитата(RathaR @ 19.08.2009 21:40) *
приложить усилия, которые несравнимы с результатом...
Рассматривай получение опыта и знаний как результат - и все придет в норму)).
У меня была когда-то программка для векторного шрифта.. Надо порыться.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Знаток
****

Группа: Пользователи
Сообщений: 346
Пол: Мужской
Реальное имя: Иван

Репутация: -  7  +


Цитата(lapp. Опять меня выкинул IE8 : @ 19.08.2009 22:16) *

Рассматривай получение опыта и знаний как результат - и все придет в норму)).
У меня была когда-то программка для векторного шрифта.. Надо порыться.

нестоит... будем бороться своими силами smile.gif


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Знаток
****

Группа: Пользователи
Сообщений: 346
Пол: Мужской
Реальное имя: Иван

Репутация: -  7  +


Впринципе вопрос можна считать решённым: попробовал я рисовать их не крутя - вышло не настолько ужасно чтобы сбрасывать этот вариант со счетов, очень даже нормально...


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 7:57
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name