Hi Leute,
ich hab ein kleines Problem und hab schon paar Dinge probiert, wie z.B. den Hintergrund mit den Farben zu übersehen.
Worum geht's?
Das Programm sollte einen bestimmten Bereich auswählen und der Benutzer sollte dann diesen Bereich abscreenen können.
Es funktioniert zwar, jedoch erkennt man den ausgewählten Bereich sehr schlecht, da es mit keinem Hintergrund o.ä. hinterlegt ist.
Mein Code (langer Code folgt):
Hab schon probiert, einfach den Background vom Picturebox leicht transparent mit rgba-Code zu ändern, leider kein Erfolg.
Mit freundlichen Grüßen
ich hab ein kleines Problem und hab schon paar Dinge probiert, wie z.B. den Hintergrund mit den Farben zu übersehen.
Worum geht's?
Das Programm sollte einen bestimmten Bereich auswählen und der Benutzer sollte dann diesen Bereich abscreenen können.
Es funktioniert zwar, jedoch erkennt man den ausgewählten Bereich sehr schlecht, da es mit keinem Hintergrund o.ä. hinterlegt ist.
Mein Code (langer Code folgt):
C#-Quellcode
-
- public partial class Area : Form
- {
- float area_X,
- area_Y,
- area_Height,
- area_Width;
- private static PropertyManager pManager = new PropertyManager();
- private static Engine Engine = new Engine();
- private Pen area_Pen;
- bool started = false;
- private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
- {
- if (pictureBox1.Image == null)
- return;
- if (started)
- {
- pictureBox1.Refresh();
- area_Height = e.Y - area_Y;
- area_Width = e.X - area_X;
- pictureBox1.CreateGraphics().DrawRectangle(area_Pen, area_X, area_Y, area_Width, area_Height);
- }
- }
- private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
- {
- if(!started)
- {
- if(e.Button == MouseButtons.Left)
- {
- area_X = e.X;
- area_Y = e.Y;
- area_Pen = new Pen(Color.DarkGray, 1);
- area_Pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
- }
- pictureBox1.Refresh();
- started = true;
- }
- }
- private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
- {
- if (started)
- {
- if (pictureBox1.Image == null)
- return;
- if (e.Button == MouseButtons.Left)
- {
- pictureBox1.Refresh();
- area_Height = e.Y - area_Y;
- area_Width = e.X - area_X;
- pictureBox1.CreateGraphics().DrawRectangle(area_Pen, area_X, area_Y, area_Width, area_Height);
- }
- started = false;
- if (area_Height > 5 && area_Width > 5)
- {
- Rectangle selectedArea = new Rectangle((int)area_X, (int)area_Y, (int)area_Width, (int)area_Height);
- Bitmap fullImage = new Bitmap(pictureBox1.Image, pictureBox1.Width, pictureBox1.Height);
- Bitmap areaImage = new Bitmap((int)area_Width, (int)area_Height);
- Graphics graphic = Graphics.FromImage(areaImage);
- graphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
- graphic.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
- graphic.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
- graphic.DrawImage(fullImage, 0, 0, selectedArea, GraphicsUnit.Pixel);
- areaImage.Save(pManager.pKey_screenshotFolderPath + '/' + Engine.createRandomString() + ".png", ImageFormat.Png);
- this.Close();
- }
- else
- {
- pictureBox1.Refresh(); // Destroys the pictureBox1.CreateGraphics().DrawRectangle()-Rectangle, if < 5x5
- }
- }
- }
- private void pictureBox1_Click(object sender, EventArgs e)
- {
- }
- private void Area_KeyDown(object sender, KeyEventArgs e)
- {
- if (e.KeyCode == Keys.Escape)
- {
- this.Close();
- }
- }
- public Area()
- {
- InitializeComponent();
- }
- private void Area_Load(object sender, EventArgs e)
- {
- // Dualscreen+ fix
- this.Height = SystemInformation.VirtualScreen.Height;
- this.Width = SystemInformation.VirtualScreen.Width;
- this.Top = SystemInformation.VirtualScreen.Top;
- this.Left = SystemInformation.VirtualScreen.Left;
- this.Hide(); // ez fix ez lyf ez skins
- CaptureAreaScreen();
- pictureBox1.BackColor = Color.Red;
- }
- public void CaptureAreaScreen()
- {
- Image tmpScreen;
- this.Hide();
- using (Bitmap CaptureScreen = new Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height))
- {
- using (Graphics gArea = Graphics.FromImage(CaptureScreen))
- {
- gArea.CopyFromScreen(SystemInformation.VirtualScreen.Left, SystemInformation.VirtualScreen.Top, 0, 0, CaptureScreen.Size);
- using (MemoryStream mStream = new MemoryStream())
- {
- CaptureScreen.Save(mStream, ImageFormat.Png);
- tmpScreen = Image.FromStream(mStream);
- pictureBox1.Image = tmpScreen;
- this.Show();
- Cursor = Cursors.Cross;
- }
- }
- }
- }
Hab schon probiert, einfach den Background vom Picturebox leicht transparent mit rgba-Code zu ändern, leider kein Erfolg.
Mit freundlichen Grüßen
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „meikel__“ ()