![]() |
DEUTSCHE VERSION |
|
![]() |
Links | | | Forums | | | Comments | | | Report news |
![]() |
Chat | | | Polls | | | Newsticker | | | Archive |
![]() |
amiga-news.de Forum > Programmierung > Rastport initialisieren ? | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2006-01-13, 13:48 h Honitos Posts: 200 User |
Ich möchte ein Image mit DrawImage_ in einen Rastport malen. Wenn ich den Rastport eines Windows nehme, funktioniert das auch, allerdings nicht mir einem selbst erstellen Rastport. Wie geht denn das ? <Pseudocode> struct Image *image struct Rastport *rp struct BitMap *bm <Image ist in Image-Struktur geladen. und funktioniert> InitBitmap *bm,*image.Depth,*image.Width,*image.Height InitRastport *rp *rpBitMap -> *bm DrawImage_ *rp,*image,0,0 Leider gibt es immer einen Crash bei DrawImage, was habe ich vergessen ? Gruss, Sven [ - Answer - Quote - Direct link - ] |
2006-01-13, 17:21 h thomas Posts: 7721 User |
Du hast keinen Speicher für den RastPort allokiert. Ich gehe mal davon aus, daß genau wie in C "struct Rastport *rp" nur den Pointer reserviert, aber nicht die Struktur, auf die der Zeiger zeigen soll. Eigentlich hättest du schon bei InitRastPort den Crash bekommen müssen, denn InitRastPort initialisiert die Struktur, auf die der Zeiger zeigt. Und wenn der Zeiger ins Nirvana zeigt, wird halt das Nirvana initialisiert. Bei InitBitMap ist es das gleiche. Und hier kommt noch hinzu, daß du auch keinen Speicher für die Bitplanes allokiert hast. InitBitMap füllt nur die Felder der Bitmap-Struktur, es reserviert keinen Speicher für die eigentlichen Grafikdaten. Statt InitBitMap solltest du AllocBitMap nehmen, das reserviert Speicher für die Bitmap, initialisiert die Bitmap und reserviert Speicher für die Bitplanes. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Answer - Quote - Direct link - ] |
2006-01-13, 20:21 h Honitos Posts: 200 User |
@thomas: Ich probiere das mal, indem ich mit AllocMem Speicher für die RastPort-Struktur allokiere und AllocBitmap verwende. Komisch nur, dass die Beispiele aus den RKM (hier Libraries and Devices) das auch nicht machen, die machen auch nur "struct ... und InitRastport/InitBitmap" Gruss, Sven [ - Answer - Quote - Direct link - ] |
2006-01-13, 21:10 h whose Posts: 2156 User |
@Honitos: Du hast da eine Kleinigkeit übersehen, das ist alles. In die RastPort-Falle bin ich anfangs auch öfter getappt ![]() Die RKM-Beispiele deklarieren den RastPort meist in folgender Form: struct RastPort rp; Beachte, daß das nicht "struct RastPort *rp" ist, wie Du es verwendet hast. In den RKM-Beispielen wird also mit der Deklaration eine globale Variable namens rp definiert, für die der Compiler auch brav Speicher zur Verfügung stellt. Da Du nur einen Zeiger auf eine RastPort-Struktur deklarierst, mußt Du Dich auch selbst um den Speicher für die entsprechende Struktur bemühen. Oder Du läßt den Zeiger weg und verwendest, wie in den RKM-Beispielen, eine globale Variable. Grüße -- --- ![]() ![]() [ - Answer - Quote - Direct link - ] |
2006-01-13, 22:32 h Honitos Posts: 200 User |
@whose: Danke ! Ja wenn man nicht jeden Tag in C rumdoktert verliert man den Blick für solche Kleinigkeiten ! [ - Answer - Quote - Direct link - ] |
2006-01-13, 23:05 h whose Posts: 2156 User |
@Honitos: Naja, das hängt mehr mit dem leicht dussligen Aufbau der RKM-Beispiele zusammen. Du hättest mit Sicherheit weniger Probleme gehabt, wenn die Autoren der Beispiele diese etwas "natürlicher" gestaltet hätten. Da man mit einem RastPort fast nur in Form eines Zeigers darauf arbeitet, wäre es sinnvoller gewesen, diese auch als Zeiger zu deklarieren und entsprechend zu initialisieren. Die sich ständig wiederholenden Probleme mit der RastPort-Geschichte bei Anfängern zeigt das ziemlich deutlich, finde ich. Zum Glück gibts Internet-Foren und Leute wie Thomas, die einem da schnell weiterhelfen ![]() Grüße -- --- ![]() ![]() [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > Rastport initialisieren ? | [ - Search - New posts - Register - Login - ] |
![]() |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2025 by amiga-news.de - all rights reserved. |
![]() |