-
Псарь (14.08.11 22:12) [0]Допустим рисуем такую линию оранжевый цветом:
Canvas.Pen.Width:= 8;
Canvas.Pen.Color:= RGB(255, 100, 0);
Canvas.MoveTo(100, 100);
Canvas.LineTo(400, 300);
Как видите появляются зазубринки, рисунок получается
некрасивым.
Гуглил, но хорошего ответа не нашел.
Устанавливал HALFTONE перед рисованием, толку ноль.
Хотя очевидно - он для скейлинга.
Как быть и что делать? -
antonn © (14.08.11 22:59) [1]взять GDI+ или извращаться как тут http://desksoft.ru/index.php?forum=13&th=46
-
Псарь (16.08.11 20:37) [2]Спасибо.
А других способ нет? :) -
Псарь (16.08.11 20:39) [3]Sapersky! :)
-
antonn (work) (16.08.11 20:58) [4]ну можно без рисования на огромном битмапе с последующим уменьшением, но тогда будет некоторый геморр с линиями разной толщины.
-
miek (17.08.11 12:04) [5]Рисовать вручную. Это называется Wu line(алгоритм Ву).
-
Sapersky (17.08.11 14:03) [6]Sapersky! :)
Мне почти нечего добавить.
Могу перечислить библиотеки, в которых есть реализация сглаживания на уровне примитивов, Wu line или что-то подобное: FastLib, Graphics32, AggPas.
Ещё вариант - рисовать аппаратно и использовать функции антиалиасинга видеокарты, обычно это "рисование на огромном битмапе с последующим уменьшением", ну и проблемы соответствующие. -
Псарь (17.08.11 19:10) [7]В общем, пользуюсь пока методом antonn'а.
Медленно.
Хотя решил сделать по другому, рисовать на большом битмапе, а потом
через один CopyRect (Т.е. пропустить манип. с пикселями), так FPS жутко упал.
Плюс еще изображение ужасное в итоге без HALFTONE. С ним выглядит нормально, но FPS низкий.
Я думал большой CopyRect (StretchBlt) будет быстрее чем CopyRect с манип. с пикселями.
Ах да, еще вопрос, почему, если устанавливаешь HALFTONE перед скейлингом - все нормально. Устанавливаешь при создании растра (Задали размеры, битность), установили HALFTONE, как он перестает действовать? -
antonn © (17.08.11 20:22) [8]Конкретно у меня еще достаточно тормознутая реализация этого АА, нужно на ММХ хотя бы. Вот тут есть кусок от homm http://pda.delphimaster.net/?id=1192295230&n=7 , ее можно почти без гемора прикрутить к tbitmap (взяв Spriteutils у miek'а например =)), но ожидать "полноэкранного" сглаживания все равно не надо. Мне для игрушки хватило (плавно повторачивались битмапы, но по сути не важно)
-
> Как видите появляются зазубринки, рисунок получается
> некрасивым.
> Как быть и что делать?
на html 5 переходи -
Псарь (29.09.11 19:24) [10]
> xayam © (28.09.11 16:35) [9]
>
>
> > Как видите появляются зазубринки, рисунок получается
> > некрасивым.
> > Как быть и что делать?
>
> на html 5 переходи
И работать через Дельфи? :D -
> И работать через Дельфи? :D
и с делфи переходи.
Могу даже обосновать, почему это стоит делать.
Допустим
1) Ты решил все проблемы с "зазубринками"
2) ... и все остальные, попавшиеся на пути...
3) В результате получилась супер пупер навороченная игра-программа
И что ты дальше будешь делать?
Я тебе скажу:
1) Ты захочешь чтобы в неё сыграл кто-нибудь
2) Ты захочешь чтобы в неё сыграл кто-нибудь не только на windows, но и на более экзотических системах
3) Ты захочешь чтобы в неё играло как можно больше народу (игра станет сетевой)
4) ...
5) И вот еще одна новость: тебе в любом случае нужно будет делать сайт для программы
(рано или поздно, не обязательно сейчас)
----------------------------------------------
Вывод:
Игра-программа и сайт должны представлять одно целое (делфи не подходит),
что относительно легко реализуется с помощью HTML5 Canvas API
PS
Глава 2 в книге Питера Лабберса
http://rutracker.org/forum/viewtopic.php?t=3611560 -
Псарь (30.09.11 21:57) [12]
> xayam © (30.09.11 18:39) [11]
Я не игру делаю, а CAD-систему. -
> Я не игру делаю, а CAD-систему.
на самом деле это не важно... ты скоро поймёшь...
PS
Чего тогда занесло в раздел Игры? Шучу :)