Autor Beitrag
Karabulut
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Fr 22.08.03 16:30 
ist es möglich en bild einzulesen, und dass in sagen wir mal, jeweils 20x20 pixel grosse teile zu zerschneiden. diese teile dan mit 2 pixel abstand einanderzuordnen?
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Fr 22.08.03 16:40 
Hi,
Karabulut hat folgendes geschrieben:
ist es möglich en bild einzulesen, und dass in sagen wir mal, jeweils 20x20 pixel grosse teile zu zerschneiden. diese teile dan mit 2 pixel abstand einanderzuordnen?

Ja, das ist möglich :P
(Oder wolltest du jetzt nochmehr wissen? *grinst frech*)

Au'revoir,
Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!
Karabulut Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Fr 22.08.03 16:41 
jo wär gut zu wissen wie ;D
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Fr 22.08.03 16:45 
Karabulut hat folgendes geschrieben:
jo wär gut zu wissen wie ;D

hihi :P
Ne, also.. du mußt das Bild halt in z.B. nen TBitmap laden.

Dann erstellst du dir ein zweites TBitmap welches die Breite = Bitmap1.Widht + (Bitmap1.Width div 20 * 2) hat (für die höhe entsprechend gleich), worein du dann die einzelnen stücke mit 2px abstand zeichnest.

Dann gehst du dein Bitmap1 in ner for-schleife durch und kopierst immer ein 20x20 großes Recht von Bitmap1 auf Bitmap2 (Suche in: Delphi-Forum, Delphi-Library CANVAS.COPYRECT).

Das war's.. ;)

Nen kompletten Code werde ich dir nich basteln, da immerhin du das programmieren willst, und nicht ich.. aber wenn du an einer stelle festhängst frag ruhig, werde helfen wo ich kann :)

(Das war jetzt die Theorie.. ich hab KA was du in Delphi kannst, adher weiß ich nich ob du weißt wie man nen TBitmap erstellt etc.. *g* Also einfach fragen bei fragen)

Au'revoir,
Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!
Karabulut Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Fr 22.08.03 19:20 
also ich lade das bild als image rein
da ich das schneiden per button auslösen will, also der benützer selber kann am bild nichts machen
ich hab aber zur zeit folgendes problem:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
if OpenPictureDialog1.Execute then
  begin
   CurrentFile := OpenPictureDialog1.FileName;
   Image1.Picture.LoadFromFile(CurrentFile);
end;
end;


das bild darf nicht grösser als 192 * 256 sein und nur eine farbtiefe von 256 farben besitzen. wie frage ich das jetzt da ab?
falls es die obigen anforderungen nicht erfüllt, soll das bild nicht angezeigt werden, sondern eine fehlermeldung kommen.
bitte um hilfe :D

achja, wegen der frage wie gut ich bin :D sieht man hier ja , bin schlecht ^^
Karabulut Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Sa 23.08.03 12:10 
naja, konnte das problem selber lösen. hab jetzt aber eine andere frage :D
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Vorlage := TBitmap.Create;
      Vorlage.Width := 400;
      Vorlage.Height := 400;
      Image2.Picture.Graphic := Vorlage;

also ich erstelle hier ein TBitmap. das bitmap wird auch angezeigt, also komplett weiss. wie kann ich per butotn das bild färben? ich hatte es so probiert
ausblenden Delphi-Quelltext
1:
vorlage.canvas.brush.color := clblack;					

geht aber ned
hilfe :D
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Sa 23.08.03 14:15 
Mit Canvas.Brush.Color legst du nur die Farbe für den Pinsel fest. Benutz dannach mal:

ausblenden Delphi-Quelltext
1:
2:
Vorlange.Canvas.Brush.Color:=clBlack;
Vorlage.Canvas.FillRect(Vorlage.ClientRect);


Damit füllst du deine Vorlage mit der in Brush.Color angegebenen Farbe ;)

Au'revoir,
Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!
Karabulut Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Sa 23.08.03 15:03 
das ClientRect wird bei meinem delphi nicht erkannt
kommt immer undeklarierter blabal :D
muss ich dazu was weiteres in Uses schreiben?
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Sa 23.08.03 15:06 
Hi,

sorry.. hab mich verlesen *pfeift* Dachte du benutzt TImage :)

Beim TBitmap muß es so sein:
ausblenden Delphi-Quelltext
1:
Vorlage.Canvas.FillRect(Rect(0,0,Vorlage.Width,Vorlage.Height));					


Au'revoir,
Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!
Karabulut Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Sa 23.08.03 15:14 
:D
frage ^^

ich ruf per panelclick das farbenfenster auf, die farbe die ich wähle soll jetzt die hintergrudnfarbe von dem TBitmap sien

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Panel2Click(Sender: TObject);
begin
   if colordialog1.Execute then
   begin
    hintergrund := colordialog1.Color;
    Vorlage.Canvas.Brush.Color:= hintergrund;
    Vorlage.Canvas.FillRect(Rect(0,0,Vorlage.Width,Vorlage.Height));
   end;
end;


habs so gemacht, färb sich aber ned, wasn daran falsch
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Sa 23.08.03 15:26 
Hi,

Vorlage ist ein TBitmap, ja???
Das TBitmap mußt du ja dann erstnoch irgendwo draufzeichnen, machst du das???

Au'revoir,
Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!
Karabulut Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Mi 27.08.03 16:49 
soweit ich weiss schon :D
so erstelle ich das TBitmap

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var vorlage : TBitmap;

Vorlage := TBitmap.Create;
      Vorlage.Width := 400;
      Vorlage.Height := 400;
      Image2.Picture.Graphic := Vorlage;


und hier will ich die farbe wählen

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Panel2Click(Sender: TObject);
begin
   if colordialog1.Execute then
   begin
    hintergrund := colordialog1.Color;
    Vorlage.Canvas.Brush.Color:= hintergrund;
    Vorlage.Canvas.FillRect(Rect(0,0,Vorlage.Width,Vorlage.Height));
   end;
end;
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Mi 27.08.03 18:35 
Hi,

mach mal aus dieser Zeile:
ausblenden Delphi-Quelltext
1:
Image2.Picture.Graphic := Vorlage;					

lieber dashier:
ausblenden Delphi-Quelltext
1:
Image2.Picture.Bitmap.Assign(Vorlage);					


und deine 2te Procedure so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Panel2Click(Sender: TObject); 
begin 
   if colordialog1.Execute then 
   begin 
    hintergrund := colordialog1.Color; 
    Vorlage.Canvas.Brush.Color:= hintergrund; 
    Vorlage.Canvas.FillRect(Rect(0,0,Vorlage.Width,Vorlage.Height)); 
    Image2.Picture.Bitmap.Assign(Vorlage);
   end
end;


Au'revoir,
Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!
Karabulut Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Sa 30.08.03 14:53 
joa du bist gut :D
nur noch ein stückchen und ich habs ;D

jetzt muss ich nur noch dsa mit dem schneiden haben, das peil ich ned so ganz, vor allem die for-schleife
also ich hab nen button
bei buttonclick soll ja das bild dann vollständig geschnitten werden und dann die teile auf das zweite bitmap gelegt werden
wie geht das nun?
FeG
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 77

Win XP Home, SuSE Linux 8.2 Prof
D3 Prof, D7 Prof
BeitragVerfasst: Sa 30.08.03 15:05 
Hi,

du gehst das Bitmap in 20er Schritten und zwei Schleifen durch
ausblenden Delphi-Quelltext
1:
2:
for i:=0 to Bitmap.Width div 20 do
  for j:=0 to Bitmap.Height div 20 do ...


Zeichnest das entprechende Rechteck in ein zweites Bitmap (.Draw), immer mit ein bisschen Rand (in Abhängigkeit von i, nämlich ...+i*2), ebenso den Rand für die höhe berechnen...

Und dann einfach Gehirn einschalten und loslegen... :wink:

MfG,
FeG
Karabulut Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Mo 01.09.03 12:32 
aber ich kenn die einzelnen delphi-draw befehle noch ned :D
helft mir bitte ein bissl mehr ;D
FeG
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 77

Win XP Home, SuSE Linux 8.2 Prof
D3 Prof, D7 Prof
BeitragVerfasst: Mo 01.09.03 15:34 
Karabulut hat folgendes geschrieben:
aber ich kenn die einzelnen delphi-draw befehle noch ned :D

Die einzelnen?? :lol:

Soviel gibt's da ja nun wirklich net... nämlich:

1) Canvas.Draw - "normales" Zeichnen
2) Canvas.StrechDraw - "gestrecktes" Zeichnen

Wobei du Draw brauchst...

Mach einfach mal, soweit du kommst, und wenn du noch Fragen zu einem speziellen Problem hast, meld dich wieder hier...

MfG,
FeG
Karabulut Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Mo 01.09.03 16:30 
naja, das prob ist ja eigentlich das ich so ziemlich 0 ahnung hab :D
ich weiss eben ned wie ich den jetzt dazu kriege das er auf buttonclick dasbild schneidet und rüber kopiert.

da macht mich die for-schleife auch ned klüger :D
FeG
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 77

Win XP Home, SuSE Linux 8.2 Prof
D3 Prof, D7 Prof
BeitragVerfasst: Mo 01.09.03 18:58 
Karabulut hat folgendes geschrieben:
naja, das prob ist ja eigentlich das ich so ziemlich 0 ahnung hab :D

Das ist dann allerdings ein grundsätzliches Problem... wie wär's mal mit ein paar Tutorials zum Thema??

Ich werde dir hier keinen kompletten Quellcode liefern, allerdings will ich mal versuchen, das ganze noch mal Schritt für Schritt und langsam zu erklären...

- Du nimmst drei TBitmaps.
- Ins eine lädts du das zu zerschneidende Bild.
- Das zweite ist das Zielbitmap.
- Das dritte fungiert als Zwischenablage.
- Dann nimmst du zwei for - Schleifen, um Bild1 horizontal und vertikal durchzugehen
- Bei jedem Schleifendurchlauf kopierst du einen 20x20 großen Ausschnitt aus Bild1 in Bild3. Dann machst du ein Draw auf Bild2 mit Bild3 (Bild3 als Parameter von Bild1.Canvas.Draw) und zwar an eine Stelle, die von den beiden Schleifenvariablen abhängt. Nennen wir die horizontale Schleifenvariablen i. Dann sähe die Formel für das setzen in horizontaler Position so aus:
ausblenden Delphi-Quelltext
1:
i*20+i*2					

^^ Die *20 als "Hauptposition", damit die Stücke wieder in 20er-Schritten drangesetzt werden, die *2 als Abstand.

Und auf die Weise fügst du alle Bildteile ein...

Wenn was unklar ist, bitte bei mir beschweren :wink:

MfG,
FeG
Niels_
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 117



BeitragVerfasst: Do 04.09.03 18:31 
Titel: Jpg auch möglich??
kann ich ein bild (typ JPG) auch zerschneiden??? Denn das wäre doch mal was tolles!