![]() |
Bitmap Datein in Delphi anzeigen und andere sachen
Hallo erstmal! Also bin neu und hab ein paar fragen. Also ich muss eine Facharbeit (Jgst 12) über Bild Steganografie schreiben. Nun ja mein Lehrer verlangt von mir zusätzlich ein Programm mit dem man Nachrichten in Bildern verschlüsseln und entschlüsseln kann. Nur hab ich keine Ahnung wie ich eine bmp Datei in Delphi laden bzw. die einzelnen Pixel auslesen soll. Hab mir zwar die Delphi hilfe durchgelesen aber so richtig schlau geworden bin ihc daraus nicht. Da steht etwas über die Klasse TCanvas aber die kann nur create und so einige andere Methoden. Könnte mir da jemand vieleicht helfen?? Schön mal danke im voraus und Guten Rutsch euch allen!
|
Re: Bitmap Datein in Delphi anzeigen und andere sachen
HI und willkommen in der DP.
Deine Bilder lädst du am besten und einfachsten in ein TBitmap. BSP:
Delphi-Quellcode:
So und das Bild ist dann auch gleich wieder aus dem Speicher gefegt. (Was für'n Schwachsinn :-*)
procedure TForm1.Landen(DatName: TFileName);
var Bild: TBtmap; begin Bild := TBitmap.Create; Bild.LoadFromFile(DatName); // Muss als Endung unbedingt .bmp haben Bild.Free; // keine Speicherprobleme erzeugen end; Auf die einzelnen Pixel wolltest du mit TCanvas zugreifen, was auch nicht abzuraten ist.
Delphi-Quellcode:
Bernhard
procedure TForm1.GetFarbe(var r, g, b: Byte; Bild: TBitmap; X, Y: Integer);
var Farbe: TColor; begin Farbe := Bild.Canvas.Pixels[X, Y]; r := GetRValue(Farbe); b := GetBValue(Farbe); g := GetGValue(Farbe); end; Guten Rutsch |
Re: Bitmap Datein in Delphi anzeigen und andere sachen
oke das is alles so naja schön xD aber ich kenn mich da net wirklich aus programmiere erst seit einem Jahr also erstmal wenn ich ein neues Projekt erstelle muss ich doch irgendwie einen auslöser haben z.B. einen Button. So wenn ich jetzt den Button habe dann muss ich doch erst die Klasse Tbitmap erstellen um mit ihr zu arbeiten.
Also bei mir sieht das dann folgender Maßen aus:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) bBildladen: TButton; procedure bBildladenClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; Bitmap1: Tbitmap; implementation {$R *.DFM} procedure TForm1.bBildladenClick(Sender: TObject); var lBild:TBitmap; begin lBild:= TBitmap.create; lBild.LoadFromFile(xxx) end; end. Mein Problem ist jetzt da das ich zunächst nicht weiß wie ich den Dateinamen für LoadfromFIle angeben soll. Wäre nett wenn sie es mir erklären würden und nicht nur die lösung hinschreiben:) weil ich hab vor Informatik als ein Abi fach zuwählen und wenn ich das dann nicht verstehe ist das schlecht :) [edit=Sharky][delphi]-Tag gesetzt. Bitte verwende diese in Zukunft. Mfg, Sharky[/edit] |
Re: Bitmap Datein in Delphi anzeigen und andere sachen
Zitat:
@gaui: Wenn Deine Bitmaps immer im selben Verzeichnis sind, kannst Du
Delphi-Quellcode:
verwenden.
Bitmap.LoadFromFile('C:\DeinPfad\DeinBitmap.bmp');
Soll es aus dem Verzeichnis geladen werden, wo Deine Exe drinnen ist dann:
Delphi-Quellcode:
Oder wenn es der Benutzer selber laden können soll, dann suchst Du im Forum nach
Bitmap.LoadFromFile(ExtractFileDir(Application.ExeName)'\DeinBitmap.bmp');
![]()
Delphi-Quellcode:
Bitmap.LoadFromFile(OpenDialog1.FileName);
Zitat:
|
Re: Bitmap Datein in Delphi anzeigen und andere sachen
Hallo!
In deinem Fall würde ich die Variable für das Bitmap in die Private-Sektion des Form verschieben, im OnCreate-Ereignis des Formulars erzeugen und im OnDestroy-Ereignis wieder freigeben. Damit hast du mit dem Erzeugen des Formulars bereits eine Instanz für dein Bitmap, die beim Beenden wieder entfernt wird.
Delphi-Quellcode:
Für das Laden des Bildes würde ich auch auf jeden Fall einen TOpenDialog nehmen. Diesen findest du in der Tool-Palette unter "Dialoge". Schau dir dabei auch mal die Eigenschaften im Objektinspektor an. Interessant für dich könnte u.a. "Filter" sein. Damit kannst du dir nur Dateien mit einer bestimmten Endund (z.B. *.bmp) anzeigen lassen. Der Dialog lässt sich beispielsweise in einer ButtonClick-Prozedur aufrufen:
type
TForm1 = class(TForm) bBildladen: TButton; procedure bBildladenClick(Sender: TObject); private { Private-Deklarationen } DasBitmap: TBitmap; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} //TForm1 OnCreate; begin DasBitmap := TBitmap.Create; end; //TForm1 OnDestroy; begin DasBitmap.Free; end; end; end.
Delphi-Quellcode:
Zum Anzeigen auf dem Formular bietet sich ein TImage an. Diesem kannst du das geladene Bitmap zur Anzeige zuweisen (mit Image.Picture.Bitmap.Assign).
procedure TfMain.btBildLadenClick(Sender: TObject);
begin if OpenDialog.Execute then begin //Execute ist True, wenn du den FileDialog mit dem Klicken des OK-Button beendest. DasBitmap.LoadFromFile(OpenDialog.FileName); //Hier lädst du jetzt das Bild end; end; |
Re: Bitmap Datein in Delphi anzeigen und andere sachen
oke direkt ne Frage zu diesem oncreate und on destroy sind das Methoden von TForm? und dieses TOPenDialog wo krieg ich das im Forum her
? weil ihc muss das ja als ein Tool für Delphi einfügen? danke schon mal für die Hilfe |
Re: Bitmap Datein in Delphi anzeigen und andere sachen
und wenn ich das so mach
Zitat:
|
Re: Bitmap Datein in Delphi anzeigen und andere sachen
onCreate und onDestroy sind Ereignisse von TForm
TOpenDialog findest Du unter dem Reiter Dialoge (Dialogs).
Delphi-Quellcode:
Da fehlt zumindest ein Pluszeichen.
Bitmap.LoadFromFile(ExtractFileDir(Application.ExeName)+'\DeinBitmap.bmp');
Grüße Klaus |
Re: Bitmap Datein in Delphi anzeigen und andere sachen
Delphi-Quellcode:
so das steht bei mir da
type
TForm1 = class(TForm) bBildladen: TButton; Image1: TImage; OpenDialog1: TOpenDialog; procedure bBildladenClick(Sender: TObject); procedure OpenDialog1CanClose(Sender: TObject; var CanClose: Boolean); private { Private-Deklarationen } Bitmap1: Tbitmap; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.bBildladenClick(Sender: TObject); var lBild:TBitmap; begin // lBild:= TBitmap.create; //Image1:= lBild.LoadFromFile('D:\Dokumente und Einstellungen\Admin\Desktop\Informatik1') end; procedure TForm1.OpenDialog1CanClose(Sender: TObject; var CanClose: Boolean); begin if OpenDialog1.Execute then begin Bitmap1.LoadFromFile(OpenDialog1.Bilder); end; end; Zitat:
[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit] |
Re: Bitmap Datein in Delphi anzeigen und andere sachen
versuche mal
Delphi-Quellcode:
Grüße
Bitmap1.LoadFromFile(OpenDialog1.FileName);
Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:30 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 by Thomas Breitkreuz