 |
| |
|
|
 |
Autor |
Nachricht |
 |
| |
| gaui |
#1| Verfasst am: 30.12.2008, 01:20 Titel: Bitmap Datein in Delphi anzeigen und andere sachen |
 |
 |
 |
|
Mitglied Alter: 18 Status: offline Beiträge: 37 angemeldet: 30.12.2008 Wohnort: Tecklenburg Delphi 5 Standard

|
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! |
 |
 |
|
|
|
| |
| rollstuhlfahrer |
#2| Verfasst am: 30.12.2008, 01:34 Titel: Re: Bitmap Datein in Delphi anzeigen und andere sachen |
 |
 |
 |
|
Mitglied Alter: 17 Status: offline Beiträge: 422 angemeldet: 01.08.2007 Wohnort: Ludwigshafen am Rhein Delphi 7 Professional

|
HI und willkommen in der DP.
Deine Bilder lädst du am besten und einfachsten in ein TBitmap.
BSP:
| Delphi-Quellcode: | markieren | 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; |
|
So und das Bild ist dann auch gleich wieder aus dem Speicher gefegt. (Was für'n Schwachsinn :-*)
Auf die einzelnen Pixel wolltest du mit TCanvas zugreifen, was auch nicht abzuraten ist.
| Delphi-Quellcode: | markieren | 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; |
|
Bernhard
Guten Rutsch |
 42 und die Frage??
Voller durchblick bei 2304 Pixel Bildschirmbreite
Zuletzt bearbeitet von rollstuhlfahrer am 30.12.2008, 01:35, insgesamt 1-mal bearbeitet. |
 |
|
|
|
| |
| gaui |
#3| Verfasst am: 30.12.2008, 02:33 Titel: Re: Bitmap Datein in Delphi anzeigen und andere sachen |
 |
 |
 |
|
Mitglied Alter: 18 Status: offline Beiträge: 37 angemeldet: 30.12.2008 Wohnort: Tecklenburg Delphi 5 Standard

|
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: | zusammenfalten | markieren | 1 · · · 5 · · · · 10 · · · · 15 · · · · 20 · · · · 25 · · · · 30 · · · · 35 36
| 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] |

Zuletzt bearbeitet von Sharky am 30.12.2008, 13:30, insgesamt 1-mal bearbeitet. |
 |
|
|
|
| |
| Sunlight7 |
#4| Verfasst am: 30.12.2008, 03:10 Titel: Re: Bitmap Datein in Delphi anzeigen und andere sachen |
 |
 |
 |
|
Mitglied Beiträge: 1.453 angemeldet: 17.09.2006 Wohnort: Delphi32.exe Delphi 5 Standard

|
| rollstuhlfahrer hat folgendes geschrieben: | | // Muss als Endung unbedingt .bmp haben | Stimmt nicht, es könnte auch ein .wmf oder .emf sein
@gaui:
Wenn Deine Bitmaps immer im selben Verzeichnis sind, kannst Duverwenden.
Soll es aus dem Verzeichnis geladen werden, wo Deine Exe drinnen ist dann:
Oder wenn es der Benutzer selber laden können soll, dann suchst Du im Forum nach TOpenDialog und verwendest dann
| gaui hat folgendes geschrieben: | | Bitmap Datein in Delphi anzeigen und andere sachen | Für die anderen Sachen, dann bitte neue Threads, pro Thread soll es nur um ein Thema gehen |
 Spiele "Die Apfelwürmchen" [1-4 Spieler Vs. Bots], "Zerbrösel" Tetris
Windows: Ja - Microsoft: Nein -> www.ReactOS.org |
 |
|
|
|
| |
| guidok |
#5| Verfasst am: 30.12.2008, 08:14 Titel: Re: Bitmap Datein in Delphi anzeigen und andere sachen |
 |
 |
 |
|
aktives Mitglied Alter: 38 Status: offline Beiträge: 351 angemeldet: 28.06.2007

|
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: | zusammenfalten | markieren | 1 · · · 5 · · · · 10 · · · · 15 · · · · 20 · · · · 25 · · · · 30 · 32
| 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. |
|
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:
| Delphi-Quellcode: | markieren | 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; |
|
Zum Anzeigen auf dem Formular bietet sich ein TImage an. Diesem kannst du das geladene Bitmap zur Anzeige zuweisen (mit Image.Picture.Bitmap.Assign). |
Zuletzt bearbeitet von guidok am 30.12.2008, 10:37, insgesamt 2-mal bearbeitet. |
 |
|
|
|
| |
| gaui |
#6| Verfasst am: 30.12.2008, 11:11 Titel: Re: Bitmap Datein in Delphi anzeigen und andere sachen |
 |
 |
 |
|
Mitglied Alter: 18 Status: offline Beiträge: 37 angemeldet: 30.12.2008 Wohnort: Tecklenburg Delphi 5 Standard

|
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 |
 |
 |
|
|
|
| |
| gaui |
#7| Verfasst am: 30.12.2008, 11:15 Titel: Re: Bitmap Datein in Delphi anzeigen und andere sachen |
 |
 |
 |
|
Mitglied Alter: 18 Status: offline Beiträge: 37 angemeldet: 30.12.2008 Wohnort: Tecklenburg Delphi 5 Standard

|
und wenn ich das so mach | Zitat: | | Bitmap.LoadFromFile(ExtractFileDir(Application.ExeName)'\DeinBitmap.bmp'); | dann erscheint eine Access Vialotion |
 |
 |
|
|
|
| |
| Klaus01 |
#8| Verfasst am: 30.12.2008, 11:16 Titel: Re: Bitmap Datein in Delphi anzeigen und andere sachen |
 |
 |
 |
|
sehr aktives Mitglied Alter: 42 Status: offline Beiträge: 3.225 angemeldet: 30.11.2005 Wohnort: München Delphi 6 Enterprise

|
onCreate und onDestroy sind Ereignisse von TForm
TOpenDialog findest Du unter dem Reiter Dialoge (Dialogs).
Da fehlt zumindest ein Pluszeichen.
Grüße
Klaus |
|
 |
|
|
|
| |
| gaui |
#9| Verfasst am: 30.12.2008, 11:50 Titel: Re: Bitmap Datein in Delphi anzeigen und andere sachen |
 |
 |
 |
|
Mitglied Alter: 18 Status: offline Beiträge: 37 angemeldet: 30.12.2008 Wohnort: Tecklenburg Delphi 5 Standard

|
Delphi-Quellcode: | zusammenfalten | markieren | 1 · · · 5 · · · · 10 · · · · 15 · · · · 20 · · · · 25 · · · · 30 · · · · 35 · · · · 40
| 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; |
|
so das steht bei mir da
| Zitat: | | Bitmap1.LoadFromFile(OpenDialog1.Bilder); |
nur öffnet der den Ordner Bilder nicht er kennt den Begriff einfach nicht. Das zweite Problem is das er diesen OpenDialog zwar im Formular anzeigt aber nicht im Debugger
[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit] |

Zuletzt bearbeitet von Sharky am 30.12.2008, 13:31, insgesamt 1-mal bearbeitet. |
 |
|
|
|
| |
| Klaus01 |
#10| Verfasst am: 30.12.2008, 11:53 Titel: Re: Bitmap Datein in Delphi anzeigen und andere sachen |
 |
 |
 |
|
sehr aktives Mitglied Alter: 42 Status: offline Beiträge: 3.225 angemeldet: 30.11.2005 Wohnort: München Delphi 6 Enterprise

|
versuche mal
Grüße
Klaus |
|
 |
|
|
|
| |
| guidok |
#11| Verfasst am: 30.12.2008, 12:37 Titel: Re: Bitmap Datein in Delphi anzeigen und andere sachen |
 |
 |
 |
|
aktives Mitglied Alter: 38 Status: offline Beiträge: 351 angemeldet: 28.06.2007

|
Hast du dir mein Post eigentlich durchgelesen? Da steht alles drin, auch dass, was du mittlerweile noch gefragt hast...
| gaui hat folgendes geschrieben: |
|
Wir kommst du auf so etwas? Die Klasse TOpenDialog hat keine Eigenschaft oder Methode, die "Bilder" heißt. Bitte schau dir auch einmal die Hilfe zum TOpenDialog an und speziell die Eigenschaft "FileName".
Desweiteren solltest du im OnClick des Buttons einfach die Execute-Methode des OpenDialog aufrufen. Diese liefert einen Boolschen Wert zurück, der TRUE ist, wenn im OpenDialog eine Datei ausgewählt und "OK" geklickt wurde. Siehe auch das Beispiel im Post #5.
Bitte benutze auch die Delphi-Tags, das macht den Quelltext wesentlich lesbarer. |
Zuletzt bearbeitet von guidok am 30.12.2008, 12:39, insgesamt 1-mal bearbeitet. |
 |
|
|
|
| |
| gaui |
#12| Verfasst am: 30.12.2008, 23:12 Titel: Re: Bitmap Datein in Delphi anzeigen und andere sachen |
 |
 |
 |
|
Mitglied Alter: 18 Status: offline Beiträge: 37 angemeldet: 30.12.2008 Wohnort: Tecklenburg Delphi 5 Standard

|
Delphi-Quellcode: | zusammenfalten | markieren | 1 · · · 5 · · · · 10 · · · · 15 · · · · 20 · · · · 25 · · · · 30 · · · · 35 · · · · 40 · · · · 45
| unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Open: TOpenDialog;
bBildladen: TButton;
Image1: TImage;
procedure bBildladenClick(Sender: TObject);
private
{ Private-Deklarationen }
DasBitmap:TBitmap;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.bBildladenClick(Sender: TObject);
begin
if Open.Execute then
begin
Image1 := DasBitmap.LoadFromFile(Open.FileName);
end;
end;
end. |
|
so sieht das bei mir jetzt aus nur erscheint da ein inkompatibler Typ also ne Fehlermeldung
| Delphi-Quellcode: | markieren | | [pre:1:3cd51faa52]<!-- #0-->[Fehler] Unit1.pas(33): Inkompatible Typen: 'TImage' und 'procedure, untyped pointer or untyped parameter'[/pre:1:3cd51faa52] |
|
Könnt ihr mir da helfen? Weil Image1 soll das geladene Bild ja auf dem Formular darstellen |

Zuletzt bearbeitet von gaui am 30.12.2008, 23:24, insgesamt 2-mal bearbeitet. |
 |
|
|
|
| |
| taaktaak |
#13| Verfasst am: 30.12.2008, 23:29 Titel: Re: Bitmap Datein in Delphi anzeigen und andere sachen |
 |
 |
 |
|
Mitglied Alter: 52 Status: offline Beiträge: 1.713 angemeldet: 25.10.2007 Wohnort: Hamburg Delphi 7 Professional

|
Moin, Moin.
Du hast das wohl ein wenig durcheinandergewürfelt, mit
| Delphi-Quellcode: | markieren | if Open.Execute then begin
DasBitmap.LoadFromFile(Open.FileName);
Image1.Picture.Bitmap.Assign(DasBitmap)
end; |
|
sollt es funktionieren. |
 Gruß Ralph
rzMagnifier - Bildschirmlupe+ColorPicker, Version 1.3 - Nov 2008 |
 |
|
|
|
| |
| gaui |
#14| Verfasst am: 30.12.2008, 23:44 Titel: Re: Bitmap Datein in Delphi anzeigen und andere sachen |
 |
 |
 |
|
Mitglied Alter: 18 Status: offline Beiträge: 37 angemeldet: 30.12.2008 Wohnort: Tecklenburg Delphi 5 Standard

|
Delphi-Quellcode: | zusammenfalten | markieren | 1 · · · 5 · · · · 10 · · · · 15 · · · · 20 · · · · 25 · · · · 30 · · · · 35 · · · · 40 · 42
| unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Open: TOpenDialog;
bBildladen: TButton;
Image1: TImage;
procedure bBildladenClick(Sender: TObject);
private
{ Private-Deklarationen }
DasBitmap:TBitmap;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.bBildladenClick(Sender: TObject);
begin
if Open.Execute then
begin
if Open.Execute then begin
DasBitmap.LoadFromFile(Open.FileName);
Image1.Picture.Bitmap.Assign(DasBitmap)
end;
end;
end;
end. |
|
Access Vialotion >.< hmm wenn ich das öffne dann hat der keinen datentyp seht ihr in der datei |
| [ An diesen Beitrag wurden eine oder mehrere Dateien angehängt. Zum Herunterladen bitte anmelden. ] |
 |
 |
|
|
|
| |
|
|
 |
|
 |
| |
|
|
| |
 
|
|
| |
|
Du darfst keine Beiträge in dieses Forum schreiben. Du darfst auf Beiträge in diesem Forum nicht antworten. Du darfst Deine Beiträge in diesem Forum nicht bearbeiten. Du darfst Deine Beiträge in diesem Forum nicht löschen. Du darfst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum nicht posten. Du kannst Dateien in diesem Forum nicht herunterladen.
|
|
 |