private void files_lv_MouseClick(object sender, MouseEventArgs e)
{
const int centerradius = 15;
var centerpen = new Pen(Color.Red, 5);
var axis = new Pen(Color.Green, 4);
var thickness = new Pen(Color.Red, 4);
var roughlevel = new Pen(Color.Blue, 2) { DashStyle = System.Drawing.Drawing2D.DashStyle.Dash };
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
var lvitem = files_lv.GetItemAt(e.X, e.Y);
if (lvitem != null)
{
try
{
// Bild laden, und in 32 bit Bitmap konvertieren
var img = new Bitmap(Files[lvitem.Index].File.FullName);
var rect = new Rectangle(0, 0, img.Width, img.Height);
Bitmap bmp = img.Clone(rect, PixelFormat.Format32bppArgb);
// Bilddaten werden gesperrt
BitmapData bmpData = bmp.LockBits(
rect,
System.Drawing.Imaging.ImageLockMode.ReadWrite,
bmp.PixelFormat
);
try
{
// Array für die Farbwerte
int size = bmp.Width * bmp.Height;
int[] rgbArray = new int[size];
// Die Farbwerte in ein Array kopieren
System.Runtime.InteropServices.Marshal.Copy(bmpData.Scan0, rgbArray, 0, size);
var calcitem = new CalcInfo { rgbValues = rgbArray, color = colorDialog1.Color.ToArgb(), Width = bmp.Width, Height = bmp.Height };
// Hier sind dann win paar Berechnungen
bmp.UnlockBits(bmpData);
using (var g = Graphics.FromImage(bmp))
{
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
// auf g malen
}
pictureBox.Image = bmp;
pictureBox.BringToFront();
pictureBox.Show();
}
finally
{
// Sperre aufheben
bmpData = null;
img.Dispose();
}
}
catch (DivideByZeroException)
{
MessageBox.Show(this, "Das Bild enthält keine farbigen Pixel.", "Bild kann nicht geöffnet werden", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (SystemException)
{
MessageBox.Show(this, "Das Bild hat ein unbekanntes Format und kann deshalb nicht geöffnet werden.", "Bild kann nicht geöffnet werden", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (
Exception ex)
{
MessageBox.Show(this, "Das Bild kann aus einem unbekannten Grund nicht verarbeitet werden.\n" + ex.ToString(), "Bild kann nicht geöffnet werden", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}