Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - was ist falsch mit dem bild?
en!gma - So 31.07.05 19:36
Titel: was ist falsch mit dem bild?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Timer1Timer(Sender: TObject); begin cnv.Draw(10,10,bild); end;
procedure TForm1.FormCreate(Sender: TObject); begin bild := TBitmap.Create; cnv := TCanvas.Create; bild.LoadFromFile('bild.bmp'); end; |
wieso will er das nicht machen?
er soll doch nur das bild zeichnen alle x sec
muss das bitmap create denn in den timer?
also dann funktioniert es, aber wenn ich jedesmal das bild neu lade im timer, zieht das dann nicht unheimlich viel cpu?
mfg
en!gma
Moderiert von
AXMD: Code- durch Delphi-Tags ersetzt.
AXMD - So 31.07.05 19:41
Wieso verwendest du nicht CopyRect oder BitBlt?
AXMD
en!gma - So 31.07.05 19:43
ich weiss nicht.
das war die einzig mir bekannte möglichkeit oben :D
//edit
hmm funzt CopyRect denn auch mit transparenten bereichen?
und mom zu BitBlp muss ich nochmal schnell suchen
en!gma - So 31.07.05 20:00
könnt ich villeicht ein beispiel für BitBlt haben?
und warum geht das denn oben nicht.
macht irgendwie keinen sinn : /
naja ich such mal weiter zum thema BitBlt
Keldorn - So 31.07.05 20:06
Hallo
warum erstellst du noch eine extra Canvas? eine form hat doch schon eine Canvas, auf der du zeichnen kannst.
und zum 3. Millionsten mal, relative Pfadangaben bringen dir nur Probleme.
Mfg Frank
en!gma - So 31.07.05 20:09
ich habe ja keine form.
also die wird versteckt.
und ich hab ja schon ExtractFilePath (Application.ExeName)+'meinBild.bmp'
im programm :D
en!gma - So 31.07.05 21:04
kann mir denn keiner sagen warum das nicht geht? : /
ManuelGS - So 31.07.05 21:08
wenn du sagst, dass die form versteckt wird, auf wessen canvas malst du dann?
en!gma - So 31.07.05 21:12
ich male auf dem desktop.
und wie gesagt
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Timer1Timer(Sender: TObject); begin bild := TBitmap.Create; cnv := TCanvas.Create; bild.LoadFromFile('bild.bmp'); cnv.Draw(10,10,bild);
end; |
so klappt es ja. nur wenn ich das bild am anfang laden will geht es nicht
Moderiert von
Klabautermann: Code- durch Delphi-Tags ersetzt.
Keldorn - So 31.07.05 21:17
sowie das jetzt dasteht, hast du schnell ein großes Speicherproblem, da das free fehlt. irgendwann wirst du out of Ressources sein.
Ansonsten kann ich dir nichts dazu sagen, da ich mich mit sowas nicht beschäftige. Allerdings glaube ich nicht, das du der Erste bist, der auf dem Desktop zeichnen will.
DESKTOP ZEICHNEN wird wohl ein paar Beiträge liefern.
Mfg Frank
en!gma - Mo 01.08.05 00:05
hab grad gesucht und gesucht und hab herausgefunden, dass
cnv noch nil ist im oncreate! wie kann ich das ändern?
achja und im oncreate lade ich einfach ein bild in image1 und lass das dann jedes mal zeichnen, sollte auch schneller gehen oder?
//edit
hab gelesen, dass man ein bool im form create auf true setzten soll, dann halt im active fenster alles durchführt und dann das bool wieder auf false stellt.
aber 1. wie macht man es ohne form active?
denn ich habe die form versteckt...
und 2. selbst wenn ich die form anzeige ist mein canvas und mein ini immernoch auf nil.
Delete - Mo 01.08.05 00:57
en!gma hat folgendes geschrieben: |
ich male auf dem desktop. |
Und wo malst du auf den Canvas des Desktops? Ich sehe niergens, dass du dir den DC des Desktops ermittelst.
retnyg - Mo 01.08.05 04:05
so sollte es gehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| var dc: hdc;
procedure TForm1.Timer1Timer(Sender: TObject); begin cnv.Draw(10,10,bild); end;
procedure TForm1.FormCreate(Sender: TObject); begin bild := TBitmap.Create; cnv := TCanvas.Create; dc := getDc(0); cnv.handle := dc; bild.LoadFromFile('bild.bmp'); end;
procedure formDestroy... begin ReleaseDc(0,DC); cnv.free; bild.free; end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!