C# png, jpg megnyitása

C# png, jpg megnyitása
2013-12-18T22:56:14+01:00
2013-12-19T13:49:44+01:00
2022-08-08T11:41:48+02:00
senkif
Sziasztok!

Lenne egy kis gondom ezzel a progival, méghozzá az, hogy nem tölti be az elmentet képet. Egy rajzprogramról van szó.


ez a mentés/megnyitás


private void gomb_uj_Click(object sender, EventArgs e) { OpenFileDialog o = new OpenFileDialog(); o.Filter = "Png files|*.png|jpeg files|*jpg|bitmaps|*.bmp"; if (o.ShowDialog() == System.Windows.Forms.DialogResult.OK) { tabla.Image = (Image)Image.FromFile(o.FileName).Clone(); } } private void gomb_megnyitas_Click(object sender, EventArgs e) { Bitmap bmp = new Bitmap(tabla.Width, tabla.Height); Graphics g = Graphics.FromImage(bmp); Rectangle rect = tabla.RectangleToScreen(tabla.ClientRectangle); g.CopyFromScreen(rect.Location, Point.Empty, tabla.Size); g.Dispose(); SaveFileDialog s = new SaveFileDialog(); s.Filter = "Png files|*.png|jpeg files|*jpg|bitmaps|*.bmp"; if (s.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (File.Exists(s.FileName)) { File.Delete(s.FileName); } if (s.FileName.Contains(".jpg")) { bmp.Save(s.FileName, ImageFormat.Jpeg); } else if (s.FileName.Contains(".png")) { bmp.Save(s.FileName, ImageFormat.Png); } else if (s.FileName.Contains(".bmp")) { bmp.Save(s.FileName, ImageFormat.Bmp); } } }

És a többi dolog (nem teljes):

Point kezdo, veg; Bitmap picture, meretez; Color szinek = Color.Black; Pen toll = new Pen(Color.Black); eszkozok jel_eszkoz; public Form1() { InitializeComponent(); picture = new Bitmap(tabla.Size.Width, tabla.Size.Height); tabla.Image = picture; } public enum eszkozok { Vonal, Ceruza, Negyzet, Ellipszis, Ures_Negyzet, Ures_Ellipszis } private void tabla_MouseDown(object sender, MouseEventArgs e) { kezdo = e.Location; Graphics g = Graphics.FromImage(picture); g.DrawImage(tabla.Image, new Rectangle(0, 0, tabla.Size.Width, tabla.Size.Height)); } private void tabla_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) picture = meretez; } private void tabla_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { veg = e.Location; meretez = new Bitmap(tabla.Size.Width, tabla.Size.Height); Graphics g = Graphics.FromImage(meretez); switch (jel_eszkoz) { case eszkozok.Ellipszis: g.DrawImage(picture, new Rectangle(0, 0, tabla.Size.Width, tabla.Size.Height)); int e_X = (kezdo.X < veg.X) ? kezdo.X : veg.X; int e_Y = (kezdo.Y < veg.Y) ? kezdo.Y : veg.Y; g.FillEllipse(new SolidBrush(szinek), e_X, e_Y, Math.Abs(veg.X - kezdo.X), Math.Abs(veg.Y - kezdo.Y)); tabla.Image = meretez; break; case eszkozok.Ures_Ellipszis: g.DrawImage(picture, new Rectangle(0, 0, tabla.Size.Width, tabla.Size.Height)); int ue_X = (kezdo.X < veg.X) ? kezdo.X : veg.X; int ue_Y = (kezdo.Y < veg.Y) ? kezdo.Y : veg.Y; Pen ue_toll = new Pen(szinek, Convert.ToInt32(vastagsag.Text)); g.DrawEllipse(ue_toll, ue_X, ue_Y, Math.Abs(veg.X - kezdo.X), Math.Abs(veg.Y - kezdo.Y)); tabla.Image = meretez; break; case eszkozok.Negyzet: g.DrawImage(picture, new Rectangle(0, 0, tabla.Size.Width, tabla.Size.Height)); int n_X = (kezdo.X < veg.X) ? kezdo.X : veg.X; int n_Y = (kezdo.Y < veg.Y) ? kezdo.Y : veg.Y; g.FillRectangle(new SolidBrush(szinek), n_X, n_Y, Math.Abs(veg.X - kezdo.X), Math.Abs(veg.Y - kezdo.Y)); tabla.Image = meretez; break; case eszkozok.Ures_Negyzet: g.DrawImage(picture, new Rectangle(0, 0, tabla.Size.Width, tabla.Size.Height)); int un_X = (kezdo.X < veg.X) ? kezdo.X : veg.X; int un_Y = (kezdo.Y < veg.Y) ? kezdo.Y : veg.Y; Pen un_toll = new Pen(szinek, Convert.ToInt32(vastagsag.Text)); g.DrawRectangle(un_toll, un_X, un_Y, Math.Abs(veg.X - kezdo.X), Math.Abs(veg.Y - kezdo.Y)); tabla.Image = meretez; break; case eszkozok.Vonal: g.DrawImage(picture, new Rectangle(0, 0, tabla.Size.Width, tabla.Size.Height)); int v_X = kezdo.X; int v_Y = kezdo.Y; Pen v_toll = new Pen(szinek, Convert.ToInt32(vastagsag.Text)); g.DrawLine(v_toll, v_X, v_Y, e.X, e.Y); tabla.Image = meretez; break; case eszkozok.Ceruza: Graphics k = tabla.CreateGraphics(); k.DrawLine(new Pen(szinek, 10), kezdo.X, kezdo.Y, e.X, e.Y); k.FillEllipse(new SolidBrush(szinek), kezdo.X-5, kezdo.Y-5, 10, 10); k.FillEllipse(new SolidBrush(szinek), e.X-5, e.Y-5, 10, 10); k.Dispose(); kezdo = e.Location; break; private void gomb_negyzet_Click(object sender, EventArgs e) { jel_eszkoz = eszkozok.Negyzet; } private void gomb_ceruza_Click(object sender, EventArgs e) { jel_eszkoz = eszkozok.Ceruza; }
Mutasd a teljes hozzászólást!
Szia!

A Bitmap nem kezel .png-t, használj helyette Picture boxot.
PictureBox pbox = new PictureBox(tabla.Width, tabla.Height);
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd