Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

04.05.2004, 12:25

"rundes" Bitmap einbinden in C++Builder 6.0

Hallo!

Ich soll bei dem Spiel 4 Gewinnt folgendes realisieren:
Der Spieler soll eine bmp-Datei auswählen und diese wird dann als "Spielstein" ins Spiel übernommen.
Ein Problem ist allerdings, dass Spielsteine rund sind und Bitmaps rechteckig.

Wie soll ich es anstellen, dass nur ein runder Ausschnitt des Bitmaps dargestellt wird?

IDE ist wie gesagt C++ Builder 6.0
MACHINE HEAD RULES!!!

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

04.05.2004, 13:41

dein stichwort lautet "Sprites".

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

3

04.05.2004, 13:56

Willst du die eigentlich auf reiner Windows Ebene machen oder willst du dafür auch Direct X benutzen?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

04.05.2004, 14:11

Naja Texturen sind immer eckig(ich habe noch nichts runde auf nem PC gesehen, nicht mal in der RW-Atom ;D ). Man kann das ganze elegant über Colorkeying machen oder wenn man es aufwendig haben möchte mit Alpha(mit falle von DX).

5

04.05.2004, 16:49

Danke mal für eure Antworten.

Das Spiel soll ohne Direct X erstellt werden.

Ist es bei Sprites nicht so, dass der transparente Bereich dann immer eine bestimmte Farbe haben muss?

Denn dann ist das Problem, dass ja der Spieler das Bitmap selbst auswählen darf und dann natürlich Bitmaps auftreten, die dieser Vorgabe nicht entsprechen.

EDIT:
Wie geht das mit dem Colorkeying?
MACHINE HEAD RULES!!!

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

04.05.2004, 17:04

Das ist genau die Sache mit der Farbe die dann rasugenommen wird. Andere Möglichkeit ist natürlich erst die Steine Zu malen und dann die Maske drüber zu machen(da kommst aber an ColorKeying Nit vorbei).

7

04.05.2004, 17:10

Sowas mit ner Maske hat unser Professor auch gesagt, aber wie schon angedeutet, kenne ich mich mit ColorKeying gar nicht aus.
MACHINE HEAD RULES!!!

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

04.05.2004, 17:35

Wie willst du es denn realisieren? Mit der Winapi?

9

04.05.2004, 17:48

Na ja, das ist so ein Problem von mir.
Reine WinAPI wär mir am liebsten, denn das hatte ich mal in der Vorlesung und das gibts ja auch schöne Tutorials.

Aber das Spiel ist ein Gemeinschaftsprojekt von 5 Leuten und die Oberfläche ist eine Form von C++ Builder, sprich das ganze ist in VCL und da kenn ich mich nicht aus.

Ich weiß jetzt selbst noch nicht, wie ich das machen soll... ???
MACHINE HEAD RULES!!!

Tracert

Treue Seele

Beiträge: 108

Wohnort: Braunschweig

Beruf: Student

  • Private Nachricht senden

10

04.05.2004, 18:29

Wirre Idee von mir:

Erstell eine "Maske" der Form, dass du ein zweifarbiges Bitmap hast. Innen ein Kreis (für den runden Spielstein) und außen in anderer Farbe den Rand, der letztlich unsichtbar werden soll.

Nun erstellst du eine Oberfläche mit dem Spielstein-Bitmap und kopierst die Maske darauf, wobei per Colorkeying der innere Kreis weggelassen wird. Dann hat das Spielstein-Bitmap einen Rand in einer Farbe bekommen. Bei Anzeige dieser Oberfläche lässt du dann wiederum per Colorkey den (neuen) Rand verschwinden.

Mit dieser Methode schneidest du den (eckigen) Rand also quasi ab. Geht vielleicht auch anders (evtl auch eleganter), aber sollte seinen Zweck erfüllen.

[Edit]
Bei Delphi konnte man in den Eigenschaften eines Bitmap-Objektes glaube ich einstellen, dass eine bestimmte Farbe transparent sein soll (also Colorkey). Ich denke mal das ist beim C++-Builder auch nicht anders. Ich hab mal Schiffe-Versenken in Delphi geschrieben, da hab ich sowas auch irgendwie genutzt. Ist leider schon ewig her, sonst könnte ich dir jetzt vielleicht genaueres erklären.

Werbeanzeige