 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
7Basic
Anmeldungsdatum: 24.10.2013 Beiträge: 9
|
Verfasst am: 24.10.2013, 04:52 Titel: Kann man BMP's Scalieren & Rotieren? |
|
|
ich würde gern eine bilddatei auf die screenres grösse scalieren, ist dieses möglich, wenn ja wie genau?
wichtig ist dabei das ich pixel weite und bixel höhe angeben kann.
desweiteren soll man das bild Rotieren lasen können.
danke im vorraus, |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 24.10.2013, 15:39 Titel: |
|
|
Dafür gibts diverse fertige lösungen, habe selbst mal eine geschrieben... ich guck mal ob ich sie finde... (war aber eine 'schnelllösung' und gibt sicherlich besseres)
Ansonsten suche mal nach Multiput (zumindest was rotieren angeht)
ist schon etwas älter und könnte vermutlich verbessert werden, sollte aber funktionieren:
Code: |
/'
ReSize vergroessert/verkleinert einen 'ImageBuffer'
Example:
NeuesBildBuffer=ReSize (OriginalBildBuffer,NeueBreite,NeueHoehe,AusgangsOption)
Mit der AusgangsOption kann das neu Dimensionierte Bild in der selben Buffergroesse
zurueckgegeben werden, dabei gehen Bildinhalte ausserhalb dieses Bereiches verloren.
'/
'ReSize
'Dimensioniert einen Buffer und seinen Inhalt neu
Function ReSize (byref InBuffer as any ptr, byval NSizeX as Integer, _
NSizeY as Integer, Byval InOut as Integer=0) as any ptr
'InOut - 0=Inhalt und Buffer vergroessern
' 1=Bufferinhalt vergroessern und Buffergroesse beibehalten
If InBuffer=0 Then Return 0
Dim GetInteger as Integer Ptr=InBuffer
Dim BufferVersion as Integer=GetInteger[0]
If BufferVersion <> &h7 Then Return 0
Dim BufferSizeX as Integer=GetInteger[2]
Dim BufferSizeY as Integer=GetInteger[3]
Dim SBuffer as any ptr
Dim XStep as Double
Dim YStep as Double
Dim XS as Integer
Dim YS as Integer
Dim XE as Integer
Dim YE as Integer
XStep=(NSizeX-1)/(BufferSizeX)
YStep=(NSizeY-1)/(BufferSizeY)
SBuffer=Imagecreate(NSizeX,NSizeY)
Dim SCol as Integer
For Y as Integer=0 to BufferSizeY-1
For X as Integer=0 to BufferSizeX-1
SCol=Point (X,Y,InBuffer)
XS=XStep*X
YS=YStep*Y
XE=XStep+(XStep*X)
YE=YStep+(YStep*Y)
'XE=XStep*(X+1)
'YE=YStep*(Y+1)
Line SBuffer,(XS,YS)-(XE,YE),SCol,bf
Next X
Next Y
If InOut<>0 Then
'hinzugefuegt um das vergroesserte/verkleinertebild in selber buffergroesse
'zurueck zu liefern
Dim NBuffer as any ptr = Imagecreate (BufferSizeX,BuffersizeY,&hFFFF00FF)
Dim PCX as Integer
Dim PCY as Integer
If NSizeX>BufferSizeX Then
PCX=int((NSizeX-(BufferSizeX-1))/2)
PCY=int((NSizeY-(BufferSizeY-1))/2)
Get SBuffer,(PCX,PCY)-(PCX+BufferSizeX-1,PCY+BufferSizeY-1),NBuffer
Deallocate (SBuffer)
Return NBuffer
Else
PCX=((BufferSizeX-NSizeX)/2)
PCY=((BufferSizeY-NSizeY)/2)
Put NBuffer,(PCX,PCY),SBuffer,PSet
Deallocate (SBuffer)
Return NBuffer
End If
Else
Return SBuffer
End If
End Function
|
_________________
 |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
7Basic
Anmeldungsdatum: 24.10.2013 Beiträge: 9
|
Verfasst am: 24.10.2013, 17:42 Titel: |
|
|
ich habe mich für multiput entschieden
problem ist, wie bekomm ich nun das bild auf 1920x1080 pixel?
hatte so gedacht, aber so ist falsch
Code: | MultiPut , 0, 0, HintergrundIMG, 1920,1080, 0 |
|
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 24.10.2013, 19:20 Titel: |
|
|
(auch wenn die Frage schon beantwortet ist )
Code: | MultiPut , MittelpunktX, MittelpunktY, HintergrundIMG, 1920,1080, 0 |
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
7Basic
Anmeldungsdatum: 24.10.2013 Beiträge: 9
|
Verfasst am: 24.10.2013, 20:07 Titel: |
|
|
anderes Problem,
ich nutze jetzt ja multiput, aber wie bekomme ich das image transperent?
ich nutze nur BMP's das bild was trans sein soll hat den rgb wert (255,0,255) aber die rosa farbe wird leider gemalt
danke im vorraus für hilfe |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|