Конференция "Игры" » Прозрачный цвет спрайтов в DelphiX [Delphi, Windows]
 
  • Илья_ (28.03.09 15:30) [0]
    Прозрачный цвет на картинках делаю не чёрный т.к. от него по краям спрайта остаётся тёмный цвет. Использую DelphiX. При создании TImageSprite выполняю:
    Image.TransparentColor := Image.Picture.Bitmap.Canvas.Pixels[0, 0];
    При настройках цветов дисплея 32 bit всё нормально, но при настройках 16 bit, прозрачный цвет не удаляется, а рисуется вместе с картинкой.
    Как это иправить?
  • Б (28.03.09 18:30) [1]

    > Прозрачный цвет на картинках делаю не чёрный т.к. от него
    > по краям спрайта остаётся тёмный цвет.


    Границы спрайта должны быть резкими, т.е. без сглаживания.


    > Image.TransparentColor := Image.Picture.Bitmap.Canvas.Pixels[0,
    >  0];


    Зачем? Там же всё автоматически устанавливается.


    > При настройках цветов дисплея 32 bit всё нормально, но при
    > настройках 16 bit


    Конечно, вся палитра меняется и цветовой ключ теряется.


    > Как это иправить?


    Не знаю.

    P.S. Обычно фон спрайтов заливают вообще неиспользуемым цветом, например розовым, фиолетовым...
  • Илья_ (28.03.09 22:28) [2]
    > Image.TransparentColor := Image.Picture.Bitmap.Canvas.Pixels[0, 0];
    >Зачем? Там же всё автоматически устанавливается.

    Дело в том, что я заполняю DXImageList динамически (в DelphiX есть даже такой пример DynImageList) и TransparentColor надо ставить вручную.

    > Границы спрайта должны быть резкими, т.е. без сглаживания
    Я уже что только не делал в своём Photoshope. Вырезаю картинку
    меняю под ней фон и после этого резких границ не получается.
    Может кто подскажет как Photoshop сделать резкий переход между фоном
    и другим слоем, чтобы без зглаживания между слоями?
  • Илья_ (28.03.09 22:28) [3]
    > Image.TransparentColor := Image.Picture.Bitmap.Canvas.Pixels[0, 0];
    >Зачем? Там же всё автоматически устанавливается.

    Дело в том, что я заполняю DXImageList динамически (в DelphiX есть даже такой пример DynImageList) и TransparentColor надо ставить вручную.

    > Границы спрайта должны быть резкими, т.е. без сглаживания
    Я уже что только не делал в своём Photoshope. Вырезаю картинку
    меняю под ней фон и после этого резких границ не получается.
    Может кто подскажет как в Photoshop сделать резкий переход между фоном
    и другим слоем, чтобы без зглаживания между слоями?
  • Xandr001 (29.03.09 20:11) [4]
    в настройках выделения сними галку с anti-alias, значение feather поставь равным нулю.
  • Xandr001 (31.03.09 08:07) [5]
    а. вот еще. при работе со спрайтами НЕЛЬЗЯ изменять размер изображения в фотошопе. потому как при этом шоп делает сглаживание. Если все-таки это необходимо, то карандаш в руки и править каждый писел
  • Илья_ (31.03.09 13:58) [6]

    > сними галку с anti-alias, значение feather поставь равным
    > нулю.


    Получаются очень рубленые края, неровные.
    Может ещё какой способ или программа специальная или статья?


    > карандаш в руки и править каждый писел

    Это мучение. Если бы он был один.
  • @!!ex © (31.03.09 14:01) [7]
    > [6] Илья_   (31.03.09 13:58)
    > Может ещё какой способ или программа специальная или статья?

    Растяжение без использования поутонорв - этот то что нужно.
  • Xandr001 (31.03.09 17:53) [8]

    > Получаются очень рубленые края, неровные.


    тут надо выбирать).
    Вы поймите. спрайты вам нужны такие, чтоб как раз края были рубленные. Т.е. резкий переход от пикселя фона к пикселю спрайта. ДелфиИкс не понимает альфу... Так что вам нужна картинка как раз с такими краями. а уж сделать так чтобы они не смотрелись рубленными - задача пиксельартиста.
    ЗЫ фотошоп Всегда ресайзит с АА.
  • Xandr001 (31.03.09 19:17) [9]
    Давайте так. скиньте то что у Вас есть, и то что примерно хотите получить. посмотрим что там у Вас
  • Илья_ (31.03.09 23:55) [10]
    Спасибо, я тут потихоньку подобрал для себя интересный способ:
    Зная какой цвет преобладает в BackgroundSprite.Image (это простая картинка с небольшим разбросом цветов - фон), я заливаю в фотошопе Background слой спрайта этим цветом. Фотошоп выполняет сглаживание слоёв спрайта и Background. Дальше всё, что осталось вокруг заливается инструментом заливка без сглаживания, чёрным цветом. В итоге при рисовании спрайта всё чёрное убирается, а рамка со сглаживанием остается, но так как она имеет цвета близкие к цветам BackgroundSprite.Image то получается эффект будто мой спрайт наложен на BackgroundSprite c эффектом сглаживания. Получается гладко и аккуратно.
  • Илья_ (31.03.09 23:58) [11]
    Интересные статьи: ХТТП://gas13.ru/v3/tutorials/ru_photoshop_pixelart_tutorials.php

    Замените в начале строки ХТТП. По другому не отправляется.
  • Xandr001 (01.04.09 12:10) [12]
    У меня вот тут возник вопрос. Использовать делфиИкс принципиально?
    Есть идейное его продолжение называется Andorra 2D. синтаксис абсолютно такой же (+/-) а производительность/удобство на порядок выше.
  • Илья_ (02.04.09 15:53) [13]
    Не принципиально. просто это всё, что у меня есть для написания игр.
    OpenGL я не знаю, делал маленькие игры на DirectX, но DelphiX - проще, удобней и я уже в нём многое знаю. Про Andorra 2D не слышал, но посмотрю. Вообще, что бы вы мне посоветовали для написания небольших
    2D игр?
  • @!!ex © (02.04.09 16:56) [14]
    > [13] Илья_   (02.04.09 15:53)

    Direct3D или OpenGL.
    Со знанием этих технологий реально найти работы, DelphiX мертв и нафиг никому не сплющился.
    Тем более раз уже есть опыт работы с нормальынми API, лучше этот опыт и развивать.
  • Б (02.04.09 17:46) [15]

    > @!!ex ©   (02.04.09 16:56) [14]


    +1.
    + Движок Omega и др. мелкие.
  • antonn © (02.04.09 18:37) [16]
    gdi, хыхыхы :)
    ну для шашек/карт хватит :)
  • Б (02.04.09 21:20) [17]

    > antonn ©   (02.04.09 18:37) [16]
    > gdi, хыхыхы :)
    > ну для шашек/карт хватит :)


    Не... надо ещё круче, примяком на Imag'ах. Ну как вариант? ;)
  • @!!ex © (02.04.09 21:23) [18]
    > [17] Б   (02.04.09 21:20)

    Image - это обертка над GDI. Так что так себе вариант.
  • antonn © (02.04.09 23:30) [19]

    > Б   (02.04.09 21:20) [17]

    я серьезно написал
  • Илья_ (03.04.09 16:38) [20]

    > Xandr001   (01.04.09 12:10) [12]


    Движок интересный, но нужно немного времени чтобы получше оценить.
    Очень понравились возможности Newton.dll. Реальная физика объектов, столкновения.
  • Б (04.04.09 21:19) [21]
    > делал маленькие игры на DirectX

    Так и продолжай в том же духе, раз уж дошёл до такого.
    Любой небольшой движок в скоре будет ущемлять. Это прям как изучать DirectDraw вместо D3D.

    > @!!ex ©   (02.04.09 21:23) [18]
    > > [17] Б   (02.04.09 21:20)
    >
    > Image - это обертка над GDI. Так что так себе вариант.


    Имелось в виду: загрузить в Imag'ы образы и конять их по форме (Не рисовать на десткрипторах), не утруждаясь в использовании всей мощи GDI.
    Вполне для сапёров, "Подкидных" и проч. небольших "офисных" игр, подойдёт связка GDI/GDI+.
  • tButton © (07.04.09 09:39) [22]
    Избавиться от плавной прозрачности в PS можно следующим "топорным" способом
    1. дублируем слой три  раза
    2. сводим четыре слоя в один

    повторяем пункты 1-2 четыре раза

    можно настроить макрос

    Не пробовал, но есть мысль, что если при выводе спрайта уменьшать его в 2, 4, 8, 16 и т.д. раз, то можно добиться плавных границ, даже если исходно они рубленые.
 
Конференция "Игры" » Прозрачный цвет спрайтов в DelphiX [Delphi, Windows]
Есть новые Нет новых   [134431   +5][b:0.001][p:0.001]