Prosty edytor map 2D

Odpowiedz Nowy wątek
2011-06-23 17:19
0

Witam, mam na zadanie napisać edytor map 2D. Każda mapa składa się z 3 warstw. Elementy map są plikami w .png (wraz z alphą). Pomyślałem, żeby wrzucić do scrollboxa 3 komponenty image i jeden image z boku. Te komponenty w scrollboxie były by warstwami a ten boczny to elementy możliwe do umieszczenia. Jednak pojawił się już problem, bo niestety nie mogę kopiować z obrazków .png. Myślałem zamianę image na paintbox lub konwertowanie tych .png do bitmapy 32 bitowej. Chciałbym móc też oddalać mapę (autosize + zmiana wielkości obrazka, chociaż nie wiem czy to dobry pomysł) oraz ustawić przezroczystość danej warstwy żeby móc zobaczyć co jest pod (tutaj jedynie przyszło mi do głowy kopiowanie danej warstwy i dodanie wartości alpha). Ostatecznie myślałem nad Open GL lub DirectX tylko, czy opłaca się używać tego dla tak prostych celów? Chciałbym poznać opinię bardziej doświadczonych programistów, jaki sposób będzie lepszy.

Pozdrawiam

Pozostało 580 znaków

2011-06-24 10:34
0

czy opłaca się używać tego dla tak prostych celów
to nie są takie znowu proste cele.

niestety nie mogę kopiować z obrazków .png
nie bardzo rozumiem: użyj takiego komponentu, by móc operować na bitmapie.

Pozostało 580 znaków

2011-06-25 12:09
0

Bitmapą mogę operować, tylko z .png jest już problem, a dokładnie z canvasem bo to on wymaga wyłącznie bitmapy.

Nikt inny się nie wypowie?

Pozostało 580 znaków

2011-06-26 18:05
0

Png też ma canvas.
Kopiuj za pomocą BitBlt.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2011-06-26 18:20
0

A ja bym się pobawił i trzymał dane mapy w jakiejś sensownej formie a nie bitmap 1000000x1000000 pikseli (x 3 warstwy). Chodzi o to, że trzymasz sobie w tablicy dwuwymiarowej trójki jakichś danych (dla każdej warstwy) i rysujesz "ręcznie" na jakimś PaintBoxie to, co aktualnie jest widoczne. Jest to szybsze, mniej pamięciożerne i bardziej elastyczne. Możesz łatwo włączać/wyłączać to, co ma być rysowane (i jak).

Pozostało 580 znaków

2011-06-27 13:39
0

_13th_Dragon
Próbuję tak:

var
  img2, img3: HDC;

[...]

  img2 := Image2.Canvas.Handle;
  img3 := Image3.Canvas.Handle;

  BitBlt(img2, 0, 0, 50, 50, img3, 0, 0, SrcCopy);

Jednak nie działa jak powinno.

[losowa nazwa]
Oczywiście mam zamiar trzymać dane tak jak mówisz, tylko interesuje mnie wizualna oprawa tego edytora. Jak rozwiązać ten problem warstw, przezroczystości itp.

Pozostało 580 znaków

2011-06-27 14:46
0

SrcCopy to za mało aby mieć przezroczystość.
Przeanalizuj kod rysowania np Glyph'a przy przycisku.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2011-06-27 15:46
0

Nie bardzo rozumiem, mógłbyś trochę jaśniej?

Którego słowa nie rozumiesz? SrcCopy nie uwzględni przezroczystości. - _13th_Dragon 2011-06-27 15:55

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0