[erledigt] Kann man TImage erweitern?
Übersicht

![]() |
d-bugBetreff: [erledigt] Kann man TImage erweitern? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, ich versuche hier verzweifelt TImage zu erweitern. Mein Ansatz :
Code: [AUSKLAPPEN] Type TMyImage Extends TImage
Function Open:TMyImage (url:Object) Local image:TMyImage = TMyImage(TImage.Load(url,MASKEDIMAGE,255,0,255)) Return image End Function End Type So, warum, zum ..., lässt sich TImage nicht Casten? Die Funktion Open gibt immer nur Null zurück. Das Image existiert natürlich und wird mit normalem LoadImage auch geladen. Natürlich ist das da oben nur ein Dummy. cheers |
||
- Zuletzt bearbeitet von d-bug am Sa, Sep 23, 2006 16:43, insgesamt einmal bearbeitet
![]() |
Blacal |
![]() Antworten mit Zitat ![]() |
---|---|---|
Servus,
Naja, du kannst nur das zu TMyImage casten, was auch ein TMyImage ist. TImage.Load gibt nämlich ein TImage zurück, welches kein TMyImage ist. so casten kannst du nur, wenn das TImage vorher auch als TMyImage angelegt wurde: Code: [AUSKLAPPEN] Local myImage:TMyImage = new TMyImage() ... Local image:TImage = myImage ... Local gecastet:TMyImage=TMyImage(image) Hier wird eine neues TMyImage erstellt, anschließen als TImage betrachtet, und danach wieder zu TMyImage gecastet - klappt wunderbar. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es tut mir leid das sagen zu müssen, aber BM interne Kernklassen wie TImage, TGadget und einige andere, können nicht extended werden ohne die gesamte Funktionalität zu kopieren.
So müsste das ganze für deine TMyImage aussehen: (ich bitte zu beachten, dass der Compiler nicht motzt obwohl die Returntypen von Create und Load sich elementar von denen unterschieden die TImage hat, was normalerweise nicht erlaubt ist -> wird intern garnicht erst extended wie es scheint) Code: [AUSKLAPPEN] Strict Import brl.max2d Type TMyImage Extends TImage Function Create:TMyImage( width,height,frames,flags,mr,mg,mb ) Local t:TMyImage=New TMyImage t.width=width t.height=height t.flags=flags t.mask_r=mr t.mask_g=mg t.mask_b=mb t.pixmaps=New TPixmap[frames] t.frames=New TImageFrame[frames] t.seqs=New Int[frames] Return t End Function Function Load:TMyImage( url:Object,flags:Int,mr:Int,mg:Int,mb:Int ) Local pixmap:TPixmap=TPixmap(url) If Not pixmap pixmap=LoadPixmap(url) If Not pixmap Return Local t:TMyImage=TMyImage.Create( pixmap.width,pixmap.height,1,flags,mr,mg,mb ) t.SetPixmap 0,pixmap Return t End Function End Type Graphics 800,600, 0 Global test:TMyImage = TMyImage.Load("c:\t1.png",MASKEDIMAGE,255,0,255) If Not test RuntimeError "No image loaded" DrawImage test, 0, 0 Flip WaitKey |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstmal Danke für die Information, Dreamora. Leider hatte ich mir sowas
ähnliches schon gedacht. Schade eigentlich, denn nun ist es leichter für mich eine komplett neue Klasse zu erstellen mit einem TImage als Field und den erweiterten Daten, die ich brauche. Das ist schlichtweg zum kotzen! @Blacal Auch dir meinen Dank, auch wenn du eigentlich nichts anderes da machst als ich. ![]() denn dann wäre dir aufgefallen, dass deine Variante genau so wenig funktioniert wie meine. ![]() Naja, kann man nichts machen. cheers |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group