grafiken zusammensetzen und verschieben

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

grafiken zusammensetzen und verschieben

Beitrag von Tsuki-Namida »

Hallo,
ich bin gerade am tüftelen wie man mehere grafiken zusammensetzen kann. zum Beispiel: 3 bilder (linke seite, rechte seite und Mitte) wie kann ich das so machen das wenn ich eine zahl eingebe wie die 6 das sich die bilder entsprechen zusammenfügen zu einem also 6 ist gegeben minus 2 wegen links und rechts und die restlichen 4 soll die mitte sein und die entsprechend duplizieren das dargestelle zusammengesetzte bild soll dann gespeichert werden zu einem.

dieses bild möchte ich aber auch in einem rahmen mit der Maus verschieben können und da habe ich noch nicht mal einen leichten hauch einer idee wie ich das machen könnte.

das alles soll mit PB 3.94 gemacht werden (Ein altes Projekt soll überarbeitet werden)

Danke schonmal für das lesen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> wenn ich eine zahl eingebe wie die 6 das sich die bilder entsprechen zusammenfügen zu einem also 6 ist gegeben minus 2 wegen links und rechts und die restlichen 4 soll die mitte sein und die entsprechend duplizieren das dargestelle zusammengesetzte bild soll dann gespeichert werden zu einem.

äh.... :shock: ...Ägypten? :|

...sorry, ich versteh nicht im mindesten, worauf du hinaus willst.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

okay ich habe mal ein beispiel vorberreitet.
ich habe einen button genommen und den in 3 teile geteielt (linke seite, rechte seite und mitte)
Bild - Bild - Bild

der benutzer des programm kann in einem stringgadget eine ziffer eingeben zum beispiel die ziffer "6" die darstellung der bilder soll sich dann so verändern (ohne freizeichen):

Bild Bild Bild Bild Bild Bild

diese dann auch beschriften und mit der maus verschieben in einem vorgegebenen rahmen.

Ich hoffe das ich mich diesmal versändlicher ausgedrückt habe -.-
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Ich hoffe das ich mich diesmal versändlicher ausgedrückt habe -.-

nein >__<

zustand (010) -> zugabe von "6" -> veränderung des zustands auf (1111)
...und vorher warens noch drei bilder, jetzt werden auf einmal 4 draus...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

ja es waren erst 3 bilder und es sind auch immer noch 3 bilder jedenfals 3 verschiedene...

6 wird eingegeben
die 2 randbilder werden abgezogen
benutzer ziffer ist dann 4
bilder verbleiben 1 (mitte.jpg)
das bild wird 4 mal neben einander angezeigt

diese darstellung muss dann aber in ein einziges bild gespeichert werden
Bild
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

vielleicht meinst du sowas in der art?:

Code: Alles auswählen

#links=0
#mitte=1
#rechts=2
#result=3
LoadImage(#links, "C:\test\5x40_l.bmp")
LoadImage(#mitte, "C:\test\5x40_m.bmp")
LoadImage(#rechts,"C:\test\5x40_r.bmp")
w=ImageWidth(#links)
h=ImageHeight(#links)


While width<3 Or width>200
  width=Val(InputRequester("breite eingeben", "bitte geben sie die breite des buttons ein", "3"))
  If Not width
    End
  EndIf
Wend


If Not CreateImage(#result, w*width, h)
  MessageRequester("fehler", "kann image nicht erstellen.")
  End
EndIf

StartDrawing( ImageOutput(#result) )
  DrawImage( ImageID(#links),  0,0)
  For i=1 To width-2
    DrawImage(ImageID(#mitte), i*w,0)
  Next
  DrawImage( ImageID(#rechts), (width-1)*w,0)
StopDrawing()


file.s=SaveFileRequester("save result...", "", "*.bmp|*.bmp",0)
If LCase(GetExtensionPart(file))<>"bmp"
  file+".bmp"
EndIf
If file 
  If SaveImage(#result, file)
    RunProgram(file)
  EndIf
EndIf
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Beitrag von Rubiko »

Ich glaube jetzt verstehe ich es:

Er hat einfach 3 Bilder (links eins, mitte eins, rechts eins)

jetzt gibt er 6 ein und die Bilder werden erstmal dupliziert (ohne Rand) d.h.

Links - Mitte - Mitte - Mitte - Mitte - Rechts

Und ich glaube so wie oben (^) will er es dann ein ein Bild Speichern, also wenn man 6 eingibt soll aus:

Bild

Bild
werden

(wobei jeder Buchstabe für ein Bild steht und das A und C für den Rand)

EDIT: Rechtschreibfehler beseitigt
Zuletzt geändert von Rubiko am 27.11.2006 13:27, insgesamt 2-mal geändert.
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

Ich kann es leider nicht an diesem PC testen da ich nicht zu hause bin und hier kein PB drauf ist.... aber ich werde es heute wenn ich zu hause bin testen... und hoffe mal das das wirklich so in der art ist wie ich mir das vorstelle.... aber der quelltext sieht schon mal gut aus :) danke

[Edit]
@Rubiko
ja genau so meinte ich das...

und dann möchte ich es auch das fertige bild verschieben können innerhalb eines rahmens
Bild
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Naja, wenn ich mir schon die Mühe gemacht hab, dann poste ich es auch ;)

Code: Alles auswählen

CatchImage(1, ?Links)
CatchImage(2, ?Mitte)
CatchImage(3, ?Rechts)

If OpenWindow(0, 0, 0, 322, 205, "Whatever", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
  StringGadget(0, 8, 10, 306, 20, "")
  ImageGadget(1, 8, 40, 280, 21, 0)
  Repeat
  	Select WaitWindowEvent()
  		Case #PB_Event_CloseWindow
  			Break
  		Case #PB_Event_Gadget
  			Select EventGadget()
  				Case 0
  					If EventType() = #PB_EventType_Change
  						a = Val(GetGadgetText(0))
  						If a > 0
  							If CreateImage(0, ImageWidth(1) + ImageWidth(3) + a * ImageWidth(2), 21)
  								StartDrawing(ImageOutput(0))
  									DrawImage(ImageID(1), 0, 0)
  									b = ImageWidth(1)
  									For i = 0 To a - 1
  										DrawImage(ImageID(2), b, 0)
  										b + ImageWidth(2)
  									Next i
  									DrawImage(ImageID(3), b, 0)
  								StopDrawing()
  								SetGadgetState(1, ImageID(0))
  							EndIf
  						EndIf
  					EndIf
  			EndSelect
		EndSelect
	ForEver
EndIf
End


DataSection
  Links:
  Data.l $01324D42, $00000000, $00360000, $00280000, $00030000, $00150000, $00010000, $00000018
  Data.l $00FC0000, $0EC40000, $0EC40000, $00000000, $00000000, $E2B80000, $7A855BD7, $00748149
  Data.l $77560000, $747B5A70, $00A8B186, $6B4A0000, $BDC4A364, $00EFF8CD, $4F3A0000, $DCDFCA4C
  Data.l $00F0F3D4, $4E390000, $F7FAE54B, $00F5F8D9, $4F240000, $F7FFD546, $00F0F3D6, $50250000
  Data.l $F7FFD547, $00F0F3D6, $50210000, $F7FFD147, $00F0F6D4, $51220000, $F8FFD248, $00F1F7D5
  Data.l $53210000, $F7FFD147, $00F1F7D3, $54220000, $F8FFD248, $00F2F8D4, $53290000, $F8FFD948
  Data.l $00F2F8DC, $53290000, $F9FFDA48, $00F2F8DC, $53310000, $F5FFDE48, $00F8FDE9, $4F2D0000
  Data.l $F7FFE044, $00F5FAE6, $522E0000, $FBFFE346, $00F5FDE6, $522E0000, $FAFFE246, $00F7FFE8
  Data.l $5B270000, $EEFFCB4A, $00FCFFE1, $622E0000, $CADBA751, $00FCFFE1, $8C4A0000, $8EA15F79
  Data.l $00C3D19C, $DD9B0000, $6A7D3BCA, $00606E39, $00000000

  Mitte:
  Data.l $01324D42, $00000000, $00360000, $00280000, $00040000, $00150000, $00010000, $00000018
  Data.l $00FC0000, $0EC40000, $0EC40000, $00000000, $00000000, $5B0F0000, $3B5B0F3B, $0F3B5B0F
  Data.l $DDB43B5B, $D8DDB4D8, $B4D8DDB4, $E6BDD8DD, $E1E6BDE1, $BDE1E6BD, $EADEE1E6, $FCEADEFC
  Data.l $DEFCEADE, $ECE0FCEA, $FEECE0FE, $E0FEECE0, $F4E7FEEC, $F6F4E7F6, $E7F6F4E7, $F4E7F6F4
  Data.l $F6F4E7F6, $E7F6F4E7, $F5E2F6F4, $F8F5E2F8, $E2F8F5E2, $F6E3F8F5, $F9F6E3F9, $E3F9F6E3
  Data.l $F7DEF9F6, $FBF7DEFB, $DEFBF7DE, $F8DFFBF7, $FCF8DFFC, $DFFCF8DF, $F8E5FCF8, $FDF8E5FD
  Data.l $E5FDF8E5, $F8E5FDF8, $FDF8E5FD, $E5FDF8E5, $F8ECFDF8, $FAF8ECFA, $ECFAF8EC, $FBEFFAF8
  Data.l $FDFBEFFD, $EFFDFBEF, $FAEDFDFB, $F8FAEDF8, $EDF8FAED, $FFF3F8FA, $FEFFF3FE, $F3FEFFF3
  Data.l $FFE7FEFF, $F7FFE7F7, $E7F7FFE7, $FFECF7FF, $FCFFECFC, $ECFCFFEC, $FFE0FCFF, $F8FFE0F8
  Data.l $E0F8FFE0, $542DF8FF, $45542D45, $2D45542D, $00004554

  Rechts:
  Data.l $01324D42, $00000000, $00360000, $00280000, $00030000, $00150000, $00010000, $00000018
  Data.l $00FC0000, $0EC40000, $0EC40000, $00000000, $00000000, $694B0000, $7B806264, $00ECEFD2
  Data.l $AD810000, $768357A0, $00778854, $EEC20000, $AEBB8FE1, $00536430, $EEB10000, $CFE9ACD4
  Data.l $00456319, $F4B70000, $EAFFC7DA, $0036540A, $F6CA0000, $E0E6BAF0, $00415C17, $F6CA0000
  Data.l $E1E7BBF0, $00425D18, $F3D00000, $E6E3C0F6, $00465A1D, $F4D10000, $E7E4C1F7, $00475B1E
  Data.l $F4D40000, $E9E4C4F9, $004A5920, $F5D50000, $EAE5C5FA, $004B5A21, $FAD10000, $E4E9C0F5
  Data.l $00485E1E, $FAD10000, $E5EAC1F5, $00485E1E, $FFD10000, $DEEFB8F7, $0037590D, $EFB80000
  Data.l $E8F9C2DE, $00416317, $FFD00000, $F0FFCDF3, $0033570D, $FFCD0000, $EBFFC8F0, $002E5208
  Data.l $FBD30000, $EDF8D0F0, $0050672F, $FFDF0000, $C7D2AAFC, $004A6129, $DEC70000, $8C8A73E0
  Data.l $0068724D, $5C450000, $7A78615E, $00D1DBB6, $00000000
EndDataSection
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

@HeXOR
der button sieht aber schick aus :D
my pb stuff..
Bild..jedenfalls war das mal so.
Antworten