Kom ihåg mig?
Home Menu

Menu


Rotera bild med GDI+, C#

Ämnesverktyg Visningsalternativ
Oläst 2009-06-24, 16:47 #1
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Som sagt, har skrivit kod för detta förut samt att det finns tusentals siter på nätet som säger att man ska göra precis som jag gör... men jag får det inte att fungera!

Jag försker att rotera (eller göra annan transformation) av en bild som sedan ska läggas på en annan bild. Exempelkoden är mycket simpel:

Kod:
Bitmap dummyBitmap = new Bitmap(300, 300, PixelFormat.Format32bppRgb);
Graphics dummyGraphics = Graphics.FromImage(dummyBitmap);

Bitmap loadedBitmap = new Bitmap(@"c:\gaugefront.png");
Graphics loadedGraphics = Graphics.FromImage(loadedBitmap);
loadedGraphics.RotateTransform(45.0F);

dummyGraphics.DrawImage(loadedBitmap, 50, 50);

dummyBitmap.Save(@"c:\images\test.png", ImageFormat.Png);
Jag skapar upp en tom bitmap och skapar en Graphicsinstans som pekar på denna bitmap. Jag skapar även upp en bitmap från fil (den bild som ska roteras) samt en Graphics-instans som pekar på denna.
Mha metoden RotateTransform() så roterar jag den i exemplet ovan med 45 grader.

Vad som händer?
En bild sparas med de två sammanslagna bilderna, men den är inte roterad! Problemet är att ingen annna transformation fungerar förutom att sätta olika koordinater på bilden via DrawImage(). När jag debuggar så ser jag att RotateTransform sätter korrekta värden i transformationsmatrixen för Graphics-objektet, men bilden vägrar att roteras.

Någon som har en idé?
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-06-24, 19:02 #2
Onkelborg Onkelborg är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2007
Inlägg: 382
Onkelborg Onkelborg är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2007
Inlägg: 382
loadedGraphics.RotateTransform(45.0F);
ska nog vara
dummyGraphics.RotateTransform(45.0F);
Onkelborg är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-06-24, 20:32 #3
dAEks avatar
dAEk dAEk är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2006
Inlägg: 678
dAEk dAEk är inte uppkopplad
Mycket flitig postare
dAEks avatar
 
Reg.datum: Dec 2006
Inlägg: 678
Jag testade att köra RotateFlip() på bitmappen istället och den gör jobbet. Det verkar alltså som att ändringen på graphics-objektet inte slår igenom på dess underliggande bitmap.
dAEk är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-06-24, 21:46 #4
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Onkelborg; nja, det är den inladdade bilden som ska roteras, inte "bakgrunden"...

dAEk; Så du får samma problem alltså? Skönt att det inte är jag som är galen.

Antalet kodrader är så pass litet så det borde gå att se vad som är fel. Jag kan väl också tillägga att png-filen som läses in inte har indexerad palette utan är 24bitar, men då skulle man också få ett felmeddelande har jag för mig.
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-06-26, 09:39 #5
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Ok det verkar ha löst sig, även fast vissa saker förblir ett mysterium.
Transformationsmatrixen måste ligga på den Graphics där du klistrar in din "nya" grafik, den transformerar inte den bitmap som redan är refererad. Så då vet jag det! (Onkelborg hade rätt m.a.o! )
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-06-26, 14:20 #6
Onkelborg Onkelborg är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2007
Inlägg: 382
Onkelborg Onkelborg är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2007
Inlägg: 382
Jag googlade, tog första träffen
Onkelborg är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 01:26.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017