webForumDet fria alternativet

Fula färger

.NET

4 svar · 360 visningar · startad av DavidB

Medlem sedan jan. 20001 372 inlägg
Frågan#1

Hej

Håller på att göra ett script som skapar en bild efter önskemål. Nu till problemet. Om jag vill fylla bilden med färg så använder jag fäljande kod:

System.Drawing.Bitmap pic = new System.Drawing.Bitmap(100,100,PixelFormat.Format16bppRgb555);
Graphics g = Graphics.FromImage(pic);
[b]g.Clear(Color.Green);[/b]

Nu till problemet, när jag använder g.Clear(en färg) så blir det inte enbart en färg utan bilden bli prickig av två färgen. En ljus och en mörk.
Enda lösningen jag har hittat på det är att jag istället för att använda Clear() så får jag loopa igenom alla pixlar på bilden och använda SetPixel(), detta känns dock som att det är lite slöseri med serverkraft.
Har även testat att ända på PixelFormat men jag har inte hittat nåt som drar ner antalet färger så de blir som jag vill.

Medlem sedan jan. 20001 372 inlägg
#2

hmm, löste det.
körde ut bilden som jpeg istället för gif.

nu är det dock så att jag har fått ett nytt problem.
om jag har två färger brevid varandra så tonar de ut sig i varandra på samma sätt som de gör i diverse bildbehandlingsprogram. nån som vet hur man gör för att slippa detta?

Medlem sedan aug. 20003 575 inlägg
#3

Hmm, chansar vilt.
Kanske för att du komprimerar bilden efteråt ?

Medlem sedan mars 20002 836 inlägg
#4

Det brukar kallas antialiasing när tex en text "smälter samman" med bakgrunden.

I graphics klassen finns en property som heter SmothingMode. Ändra den till att inte använda antialias

System.Drawing.Bitmap pic = new System.Drawing.Bitmap(100,100,PixelFormat.Format16bppRgb555);
Graphics g = Graphics.FromImage(pic);

[b]g.SmothingMode = SmothingMode.None;[/b]

g.Clear(Color.Green);

SmothingMode hittar du i: System.Drawing.Drawing2d namespacet

om nu din kod ser likadan ut fortfarande :e

cya,
PatrikB

Medlem sedan jan. 20001 372 inlägg
#5

fungerar fortfarande inte.

bifogar hela min kod:

private void Page_Load(object sender, System.EventArgs e){
	int picwidth = 100;
	int picheight = 100;
	int bordersize = 0;

	System.Drawing.Bitmap pic = new System.Drawing.Bitmap(picwidth,picheight,PixelFormat.Format16bppRgb555);
	Graphics g = Graphics.FromImage(pic);

	g.Clear(Color.Green);
	g.SmoothingMode = SmoothingMode.None;

	PointF pf = new PointF(bordersize,bordersize);
	SolidBrush br = new SolidBrush(Color.White);
	StringFormat sf = new StringFormat(StringFormatFlags.NoClip);

	string familyName = "Bamboo";

	Font regFont = new Font("Verdana",25,FontStyle.Regular,GraphicsUnit.Pixel);

	g.DrawString("text",regFont,br,pf,sf);

	Response.ContentType = "image/jpeg";
	pic.Save(Response.OutputStream, ImageFormat.Jpeg);
	pic.Dispose();
}
261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)