-
Прозрачный цвет на картинках делаю не чёрный т.к. от него по краям спрайта остаётся тёмный цвет. Использую DelphiX. При создании TImageSprite выполняю:
Image.TransparentColor := Image.Picture.Bitmap.Canvas.Pixels[0, 0];
При настройках цветов дисплея 32 bit всё нормально, но при настройках 16 bit, прозрачный цвет не удаляется, а рисуется вместе с картинкой.
Как это иправить?
-
> Прозрачный цвет на картинках делаю не чёрный т.к. от него
> по краям спрайта остаётся тёмный цвет.
Границы спрайта должны быть резкими, т.е. без сглаживания.
> Image.TransparentColor := Image.Picture.Bitmap.Canvas.Pixels[0,
> 0];
Зачем? Там же всё автоматически устанавливается.
> При настройках цветов дисплея 32 bit всё нормально, но при
> настройках 16 bit
Конечно, вся палитра меняется и цветовой ключ теряется.
> Как это иправить?
Не знаю.
P.S. Обычно фон спрайтов заливают вообще неиспользуемым цветом, например розовым, фиолетовым...
-
> Image.TransparentColor := Image.Picture.Bitmap.Canvas.Pixels[0, 0];
>Зачем? Там же всё автоматически устанавливается.
Дело в том, что я заполняю DXImageList динамически (в DelphiX есть даже такой пример DynImageList) и TransparentColor надо ставить вручную.
> Границы спрайта должны быть резкими, т.е. без сглаживания
Я уже что только не делал в своём Photoshope. Вырезаю картинку
меняю под ней фон и после этого резких границ не получается.
Может кто подскажет как Photoshop сделать резкий переход между фоном
и другим слоем, чтобы без зглаживания между слоями?
-
> Image.TransparentColor := Image.Picture.Bitmap.Canvas.Pixels[0, 0];
>Зачем? Там же всё автоматически устанавливается.
Дело в том, что я заполняю DXImageList динамически (в DelphiX есть даже такой пример DynImageList) и TransparentColor надо ставить вручную.
> Границы спрайта должны быть резкими, т.е. без сглаживания
Я уже что только не делал в своём Photoshope. Вырезаю картинку
меняю под ней фон и после этого резких границ не получается.
Может кто подскажет как в Photoshop сделать резкий переход между фоном
и другим слоем, чтобы без зглаживания между слоями?
-
в настройках выделения сними галку с anti-alias, значение feather поставь равным нулю.
-
а. вот еще. при работе со спрайтами НЕЛЬЗЯ изменять размер изображения в фотошопе. потому как при этом шоп делает сглаживание. Если все-таки это необходимо, то карандаш в руки и править каждый писел
-
> сними галку с anti-alias, значение feather поставь равным
> нулю.
Получаются очень рубленые края, неровные.
Может ещё какой способ или программа специальная или статья?
> карандаш в руки и править каждый писел
Это мучение. Если бы он был один.
-
> [6] Илья_ (31.03.09 13:58)
> Может ещё какой способ или программа специальная или статья?
Растяжение без использования поутонорв - этот то что нужно.
-
> Получаются очень рубленые края, неровные.
тут надо выбирать).
Вы поймите. спрайты вам нужны такие, чтоб как раз края были рубленные. Т.е. резкий переход от пикселя фона к пикселю спрайта. ДелфиИкс не понимает альфу... Так что вам нужна картинка как раз с такими краями. а уж сделать так чтобы они не смотрелись рубленными - задача пиксельартиста.
ЗЫ фотошоп Всегда ресайзит с АА.
-
Давайте так. скиньте то что у Вас есть, и то что примерно хотите получить. посмотрим что там у Вас
-
Спасибо, я тут потихоньку подобрал для себя интересный способ:
Зная какой цвет преобладает в BackgroundSprite.Image (это простая картинка с небольшим разбросом цветов - фон), я заливаю в фотошопе Background слой спрайта этим цветом. Фотошоп выполняет сглаживание слоёв спрайта и Background. Дальше всё, что осталось вокруг заливается инструментом заливка без сглаживания, чёрным цветом. В итоге при рисовании спрайта всё чёрное убирается, а рамка со сглаживанием остается, но так как она имеет цвета близкие к цветам BackgroundSprite.Image то получается эффект будто мой спрайт наложен на BackgroundSprite c эффектом сглаживания. Получается гладко и аккуратно.
-
Интересные статьи: ХТТП://gas13.ru/v3/tutorials/ru_photoshop_pixelart_tutorials.php
Замените в начале строки ХТТП. По другому не отправляется.
-
У меня вот тут возник вопрос. Использовать делфиИкс принципиально?
Есть идейное его продолжение называется Andorra 2D. синтаксис абсолютно такой же (+/-) а производительность/удобство на порядок выше.
-
Не принципиально. просто это всё, что у меня есть для написания игр.
OpenGL я не знаю, делал маленькие игры на DirectX, но DelphiX - проще, удобней и я уже в нём многое знаю. Про Andorra 2D не слышал, но посмотрю. Вообще, что бы вы мне посоветовали для написания небольших
2D игр?
-
> [13] Илья_ (02.04.09 15:53)
Direct3D или OpenGL.
Со знанием этих технологий реально найти работы, DelphiX мертв и нафиг никому не сплющился.
Тем более раз уже есть опыт работы с нормальынми API, лучше этот опыт и развивать.
-
> @!!ex © (02.04.09 16:56) [14]
+1.
+ Движок Omega и др. мелкие.
-
gdi, хыхыхы :)
ну для шашек/карт хватит :)
-
> antonn © (02.04.09 18:37) [16]
> gdi, хыхыхы :)
> ну для шашек/карт хватит :)
Не... надо ещё круче, примяком на Imag'ах. Ну как вариант? ;)
-
> [17] Б (02.04.09 21:20)
Image - это обертка над GDI. Так что так себе вариант.
-
> Б (02.04.09 21:20) [17]
я серьезно написал
-
> Xandr001 (01.04.09 12:10) [12]
Движок интересный, но нужно немного времени чтобы получше оценить.
Очень понравились возможности Newton.dll. Реальная физика объектов, столкновения.
-
> делал маленькие игры на DirectX
Так и продолжай в том же духе, раз уж дошёл до такого.
Любой небольшой движок в скоре будет ущемлять. Это прям как изучать DirectDraw вместо D3D.
> @!!ex © (02.04.09 21:23) [18]
> > [17] Б (02.04.09 21:20)
>
> Image - это обертка над GDI. Так что так себе вариант.
Имелось в виду: загрузить в Imag'ы образы и конять их по форме (Не рисовать на десткрипторах), не утруждаясь в использовании всей мощи GDI.
Вполне для сапёров, "Подкидных" и проч. небольших "офисных" игр, подойдёт связка GDI/GDI+.
-
Избавиться от плавной прозрачности в PS можно следующим "топорным" способом
1. дублируем слой три раза
2. сводим четыре слоя в один
повторяем пункты 1-2 четыре раза
можно настроить макрос
Не пробовал, но есть мысль, что если при выводе спрайта уменьшать его в 2, 4, 8, 16 и т.д. раз, то можно добиться плавных границ, даже если исходно они рубленые.