AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

BMP's zerschneiden

Ein Thema von Aesir · begonnen am 3. Jun 2013 · letzter Beitrag vom 4. Jun 2013
Antwort Antwort
Aesir

Registriert seit: 3. Jun 2013
2 Beiträge
 
#1

BMP's zerschneiden

  Alt 3. Jun 2013, 21:18
Delphi-Version: 5
Hallo zusammen

vorweg ich bin nur Hobbyprogrammierer also erwartet nicht allzu viel Fachwissen.
Folgendes Problem:

In letzter Zeit Arbeite ich an einem Schiebepuzzle mit 4x4 Feldern a 30x30 Pixel.
Momentan bin ich dabei es dem Nutzer zu ermöglichen eigene 120x120 große Bilder (BMP's) in ein Image zu laden
sodass diese dann "zerschnitten" und weiter genutzt werden können bzw sofort auf die jeweiligen Speedbuttons die ich als Felder benutze,
geladen werden.
Mit der Copyrect Methode hab ich schon ein wenig rum experimentiert leider komm ich damit nicht ganz so recht klar
(Anfänger und so....)

Ich würde mich wirklich freuen wenn mir hier jemand weiter helfen könnte....mit einem Beispiel dazu oder irgendetwas...bin gerade am verzweifeln

Grüße Aesir
  Mit Zitat antworten Zitat
Benutzerbild von Jonas Shinaniganz
Jonas Shinaniganz

Registriert seit: 30. Aug 2011
249 Beiträge
 
Delphi XE5 Ultimate
 
#2

AW: BMP's zerschneiden

  Alt 3. Jun 2013, 21:53
Klar helfen wir,
wie weit bist du denn und wo genau hakt es?

Ich würde inetwa so vorgehen:

1. Bild in TImage laden
2. Ein 2 dimensionales Array vom Typ TImage anlegen
3. Der Anzahl der Speedbuttons entsprechen in einer For-Schleife die Teilbilder befüllen (Dafür ist Copyrect schon genau richtig)

Grüße
Die Leiter der Entwicklungsabteilung dreht total am Mausrad!
  Mit Zitat antworten Zitat
Aesir

Registriert seit: 3. Jun 2013
2 Beiträge
 
#3

AW: BMP's zerschneiden

  Alt 3. Jun 2013, 22:05
Um das befüllen der Buttons geht es nicht ich möchte es erstmal so hinbiegen dass überhaupt Bildteile
aus meinem Image ausgeschnitten bzw rauskopiert werden....eigentlich kann das doch nicht so schwer sein oder steh ich auf dem Schlauch? o.o
Delphi-Quellcode:
const
  Spalten = 4;
  Zeilen = 4;
  Kantenlaenge = 30;
var
  X, Y: integer;
  QuellRect: TRect;
begin
  for Y := 0 to Zeilen - 1 do //zeilen
    for X := 0 to Spalten - 1 do //spalten
      begin
        //neue Bitmap erzeugen
        Ziel := TBitmap.Create;
        Ziel.Width := Kantenlaenge;
        Ziel.Height := Kantenlaenge;
        //Koordinaten errechnen
        QuellRect := Rect(X * Kantenlaenge, Y * Kantenlaenge, (X + 1) * Kantenlaenge, (Y + 1) * Kantenlaenge);
        //Ausschnitt aus Quellbild kopieren
        Ziel.Canvas.CopyRect(Rect(0, 0, Kantenlaenge, Kantenlaenge), image1.Canvas, QuellRect);
        //hier sollte die bmp dann vorliegen...tut sie aber aus irgendwelche Grunden nicht...
end;
So schaut es bisher aus
  Mit Zitat antworten Zitat
Benutzerbild von Jonas Shinaniganz
Jonas Shinaniganz

Registriert seit: 30. Aug 2011
249 Beiträge
 
Delphi XE5 Ultimate
 
#4

AW: BMP's zerschneiden

  Alt 3. Jun 2013, 22:37
Ahja.. ja ist doch schon fast gut.

Ich hab mal KURZ eine DRECKIGE Demo geschrieben, sollte dir aber helfen.

Edit: Hast du dir mal anzeigen lassen, was du genau mit CopyRect kopiert hast? Du irrst dich garantiert in den Dimensionen deines Quell-Bildes. Das sieht eigentlich gut aus, was du machst. Da ist soweit nichts drann zu bemängeln. Es kommt ganz auf dein Source-Image an. Was ich meine: 30px sind bei einem hochauflösendem jpg nicht besonders viel...

Woher weißt du denn schon vorher, das deine Kantenlänge 30 Pixel beträgt? Du kannst warscheinlich nicht den gleichen Wert für die kleinen und das ausgangs Bild verwenden...
Angehängte Dateien
Dateityp: zip kurze demo.zip (2,01 MB, 11x aufgerufen)
Die Leiter der Entwicklungsabteilung dreht total am Mausrad!

Geändert von Jonas Shinaniganz ( 3. Jun 2013 um 22:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: BMP's zerschneiden

  Alt 4. Jun 2013, 07:17
Crosspost
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz