![]() |
.rc-Datei lässt sich nicht aus Projekt entfernen?!?
Hallo,
gestern wollte ich Grafiken per Resource-Datei in meine .exe-Datei einbinden in Turbo Delphi, das hat aber alles nicht ganz hingehauen. 1. Ich habe die grafiken.rc-Datei mit validem Inhalt mit brcc32.exe kompiliert. grafiken.RES-Datei entstand. 2. Dann startete ich Turbo Delphi und er meinte beim Öffnen meines Projektes: "meinprojektname.RES ist nicht vorhanden. Wird erstellt." Das fand ich schonmal komisch, weil ich dachte ich brauche nur die grafiken.RES. Warum erstellt der eine meinprojektname.RES-Datei? 3. Habe dann die Datei so eingebunden: {$R grafiken.RES} 4. Weil es dann glaube ich nicht direkt funktionierte habe ich mal probiert im Projekt-Fenster Rechtsklick auf meinprojektname.exe und dann Hinzufügen die grafiken.RC-Datei. Nichts passierte. 5. Nach dem Neustarten von TD und öffnen meines Projektes hatte ich nun die grafiken.RC-Datei auch im Projektfenster liegen und nun kommt immer dieses "Duplicate Resource"-Errormeldung wenn ich das Projekt starten will. Das komische ist die .RC-Datei lässt sich nicht mehr aus dem Projekt-Fenster entfernen. Ich habe alles probiert. Habe die Dateien RC und RES mittlerweile sogar aus dem Projektverzeichnis gelöscht, aber die grafiken.RC-Datei ist weiterhin im Projektfenster, die "Duplicate"-Meldung kommt und die RC Datei lässt sich einfach nicht entfernen. :/ Könnt ihr mir helfen? |
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Zitat:
Zitat:
Zitat:
|
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Oh man ja sorry, hatte {$R grafiken.res} in .dpr und in Form implementation drin. :/ Jetzt gehts. Danke ^_^.
Nur noch ein Problem. Ich nutze ja PNGDelphi um PNG-Bilder benutzen zu können, die lassen sich aber nicht mit 001 BITMAP "grafiken/pn_logo.png" oder 001 PNG "grafiken/pn_logo.png" über SplashGrafik.Picture.Bitmap.LoadFromResourceID(HIn stance, 001); oder SplashGrafik.Picture.PNG.LoadFromResourceID(HInsta nce, 001); laden. Wie mache ich das mit den PNG's damit die in die .exe-Datei integriert werden? ^_^ |
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
BITMAP als Schlüsselwort steht nun mal auch für BITMAPs und nicht für PiNGraphic. Du müsstest sie als RCDATA ablegen und ob dann noch LoadFromResource klappt ist fraglich. Ich weiss nicht aus dem Kopf wie PiNG diese Methoden implementiert. Soweit ich weiss, implementiert der Resourcencompiler kein Schlüsselwort für PiNG, somit ist PNG und BITMAP grundsätzlich nicht nutzbar.
Was mich viel mehr interessiert: Du müsstest bei beiden RC Angaben jeweilis vom Resourcencompiler dies um die Ohren geworfen bekommen, da er beim Ping dieses nicht als Bitmap ein binden kann und zum anderen weil er das Schlüsselwort nicht kennt. Von daher: Sicher dass du überhaupt eine neue .RES Datei bekommen hast? Schonmal von der Kommandozeile kompiliert und gibt es Meldungen? |
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Ich probiere es mal mit RCDATA. Ich melde mich dann...
|
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Hi,
hm das funktioniert noch nicht. Meine RC-Datei ist wie folgt: G001 RCDATA "grafiken/pn_logo.png" Und mein Quelltext:
Delphi-Quellcode:
Resource1 := TResourceStream.Create(HInstance, 'G001', PChar('RC_DATA'));
SplashGrafik.Picture.Graphic.LoadFromStream(Resource1); Kompilierung der RC-Datei hat auch funktioniert und RES wurde erstellt. Er meint aber immer Ressource G001 kann nicht gefunden werden. :/ |
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Du brauchst selbst keinen ResourceStream zu erzeugen, das macht LoadFromResourceName/ID aus PNGDelphi selbst. Dabei wird der Res-Typ RCDATA vorausgesetzt, was Du ja erfüllst.
Delphi-Quellcode:
sollte eigentlich klappen.
SplashGrafik.Picture.PNG.LoadFromResourceName(HInstance, 'G001');
|
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Zitat:
|
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
So klappt es!!
Delphi-Quellcode:
Nur nun sieht man natürlich immernoch das Form-Fenster im Hintergrund. Wie macht ich das nun transparent so das nur das transparente Image angezeigt wird?
p := tpngobject.Create;
p.LoadFromResourceName(HInstance, 'G001'); SplashGrafik.Picture.Assign(p); freeandnil(p); |
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Zitat:
Dein ResourceStream in deinem Versuch zuvor hast du falsch aufgerufen:
Delphi-Quellcode:
RC_DATA ist ein Typ und muss direkt angegeben werden und nicht als String. Letzteres nur bei besonderen Datentypen.
Resource1 := TResourceStream.Create(HInstance, 'G001', RC_DATA);
|
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Jo das klappt ja nun, allerdings ist die PNG-Datei nur IN der Form transparent.
Wenn ich nun die Form wie folgt ausblende:
Delphi-Quellcode:
Dann ist die Form zwar weg, allerdings liegt der Schatten des Splash wieder auf Weiss. :( Und die GR32 Lösung kapier ich nicht. :(
Splash.Brush.Style:=bsClear;
Splash.BorderStyle:=bsNone; |
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
... da das PiNG die Transparenz erreicht, in dem es den Hintergrund des Images nimmt und anhand der Transparenzen das Bild reinrechnet und darstellt. Somit wird auf einem DC der Hintergrund der Form gemalt - und da passiert dann durch dein Brush.Style rein gar nichts, somit bleibt es bei dem weißen default Inhalt der MemDC. Mit einem Image bekommst du das so definitv nicht hin.
|
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Zitat:
|
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Gegenfrage: Muss es halbtransparenzen sein? Reichen nicht auch nur voll-transparenz-Bereiche?
|
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Zitat:
![]() Und der Splash soll natürlich vernünftig transparent auf dem Desktop-Hintergrundbild liegen. |
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Dann musst du viel Aufwand treiben. Hättest du dies nun verneint, dann hätte man relativ einfach mit Regions arbeiten können. So aber musst du dir einen Screenshot vom Desktop holen und darauf die PiNG Grafik malen lassen. Dann passt das mit der Halbtransparenz. Problem dabei: Fenster im Hintergrund welche nach dem Erstellen des Screenshots verschwinden, sich verschieben oder verändern, werden nicht aktualisiert in diesem Bereich. Auch wird das Verschieben des Splash Screens sehr aufwändig und Rechenintensiv.
Das wäre der grundlegende Weg. |
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Danke erstmal für eure Geduld! :D
Ich bin nun fast am Ziel. Habe nun doch Graphics32 installiert und so funktioniert es OPTISCH nun einwandfrei:
Delphi-Quellcode:
Jetzt bleibt lediglich das Problem: Wie lade ich 'grafiken/pn_logo.png' mit dem LoadPNGIntroBitmap32 aus meiner Resource-Datei? Nun braucht er die Datei ja wieder von extern. :/
Bit := TBitmap32.Create;
LoadPNGintoBitmap32(Bit, ExtractFilePath(ParamStr(0)) + 'grafiken/pn_logo.png', Alpha); setWindowLong(Handle, GWL_EXSTYLE, getWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED); BlendF.BlendOp := AC_SRC_OVER; BlendF.BlendFlags := 0; BlendF.SourceConstantAlpha := 255; BlendF.AlphaFormat := AC_SRC_ALPHA; P2 := Point(0, 0); Size.cx := Bit.Width; Size.cy := Bit.Height; UpdateLayeredWindow(Handle, 0, nil, @Size, Bit.Handle, @P2, 0, @BlendF, ULW_ALPHA); |
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Niemand ne Idee?
|
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
LoadPNGIntoBitmap32 erwartet doch eigentlich einen Stream, die überladenen Version mit dem Filenamen erzeugt ja auch nur einen temporären Filestream. Also Resource-Stream erzeugen und den übergeben.
Gruß, teebee |
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Zitat:
|
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Naja, anstatt
![]() ![]() |
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Zitat:
Delphi-Quellcode:
Nix mit TFileStream etc...
p := tpngobject.Create;
p.LoadFromResourceName(HInstance, 'G001'); SplashGrafik.Picture.Assign(p); freeandnil(p); Da müsstest du mir nun schon ein praktisches Beispiel mit LoadPNGIntoBitmap32 liefern. :/ |
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Ja sorry, aber da war meine Antwort ein Schnellschluß. Du nutzt den TFileStream nicht und von daher war das natürlich Schwachfug von mir. Dieser Thread handelt eigentlich eh davon die RC Datei einzubinden, von daher empfehle ich dir einfach nochmal einen neuen Thread aufzumachen mit der Frage, wie man ein LoadPNGIntoBitmap32() mit einer Resource füttern kann. Oder teebee erläutert das noch genauer...
|
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Ok, dann will ich mal. Hier sind die beiden Prozedur-Versionen von LoadPNGintoBitmap32:
Delphi-Quellcode:
Die Version, die Pixelex benutzt hat, ist die mit dem Filenamen. Dort wird erst ein Filestream erzeigt, und dieser an die eigentliche Arbeitsversion durchgereicht:
procedure LoadPNGintoBitmap32(DstBitmap: TBitmap32; Filename: String; out AlphaChannelUsed: Boolean); overload;
procedure LoadPNGintoBitmap32(DstBitmap: TBitmap32; SrcStream: TStream; out AlphaChannelUsed: Boolean); overload;
Delphi-Quellcode:
Um jetzt eine Grafik aus einer Resource zu laden, muss ich einen TResourceStream erzeugen, und diesen an LoadPNGintoBitmap32 übergeben.
procedure LoadPNGintoBitmap32(DstBitmap: TBitmap32; Filename: String; out AlphaChannelUsed: Boolean);
var FileStream: TFileStream; begin FileStream := TFileStream.Create(Filename, fmOpenRead); try LoadPNGintoBitmap32(DstBitmap, FileStream, AlphaChannelUsed); finally FileStream.Free; end; end;
Delphi-Quellcode:
Gruß, teebee
Var ResStream: TResourceStream;
begin ResStream := TResourceStream.Create(hInstance, 'G001', RT_RCDATA); try LoadPNGintoBitmap32(DstBitmap, ResStream, AplhaChannelUsed); finally ResStream.Free; end; end; |
Re: .rc-Datei lässt sich nicht aus Projekt entfernen?!?
Jop habs hinbekommen! Danke für eure Antworten, nun läuft alles!!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz