Asterix-Ac
Erfahrenes Mitglied
Hi Community,
ich habe TestProjekt gemacht, mit dem ich Bilder zoomen will.
D.h. das urspüngliche Bild soll nicht vergrößert oder verkleinert werden.
Mein Problem dabei ist, dass das hineingeladene Image (auf einer PictureBox)
permanent da ist(also nicht ersetzt wird) und mein gezoomtes Image (auf einem Graphics Kontext) nach dem ausführen der Methode verlohen geht. Ich habe aber keine Idee, wie es funktionieren könnte.
Nachfolgend poste ich mal den kompletten Code.
Vielleicht hat jemand eine Idee, wie man es lösen könnte.
Danke schonmal im Vorraus.
Asterix
ich habe TestProjekt gemacht, mit dem ich Bilder zoomen will.
D.h. das urspüngliche Bild soll nicht vergrößert oder verkleinert werden.
Mein Problem dabei ist, dass das hineingeladene Image (auf einer PictureBox)
permanent da ist(also nicht ersetzt wird) und mein gezoomtes Image (auf einem Graphics Kontext) nach dem ausführen der Methode verlohen geht. Ich habe aber keine Idee, wie es funktionieren könnte.
Nachfolgend poste ich mal den kompletten Code.
Vielleicht hat jemand eine Idee, wie man es lösen könnte.
Danke schonmal im Vorraus.
Asterix
Code:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace zoomTest
{
/// <summary>
/// Zusammendfassende Beschreibung für Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private Rectangle rect;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.OpenFileDialog ofd;
private System.Windows.Forms.SaveFileDialog sfd;
private System.Windows.Forms.MainMenu mainMenu1;
private System.Windows.Forms.MenuItem menuItem1;
private System.Windows.Forms.MenuItem menuItem2;
private System.Windows.Forms.MenuItem menuItem3;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
/// <summary>
/// Erforderliche Designervariable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Erforderlich für die Windows Form-Designerunterstützung
//
InitializeComponent();
//
// TODO: Fügen Sie den Konstruktorcode nach dem Aufruf von InitializeComponent hinzu
//
}
/// <summary>
/// Die verwendeten Ressourcen bereinigen.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Erforderliche Methode für die Designerunterstützung.
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
/// </summary>
private void InitializeComponent()
{
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.ofd = new System.Windows.Forms.OpenFileDialog();
this.sfd = new System.Windows.Forms.SaveFileDialog();
this.mainMenu1 = new System.Windows.Forms.MainMenu();
this.menuItem1 = new System.Windows.Forms.MenuItem();
this.menuItem2 = new System.Windows.Forms.MenuItem();
this.menuItem3 = new System.Windows.Forms.MenuItem();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// pictureBox1
//
this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pictureBox1.Location = new System.Drawing.Point(16, 24);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(292, 244);
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
//
// sfd
//
this.sfd.FileName = "doc1";
//
// mainMenu1
//
this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem1});
//
// menuItem1
//
this.menuItem1.Index = 0;
this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem2,
this.menuItem3});
this.menuItem1.Text = "Datei";
//
// menuItem2
//
this.menuItem2.Index = 0;
this.menuItem2.Text = "Load Image";
this.menuItem2.Click += new System.EventHandler(this.menuItem2_Click);
//
// menuItem3
//
this.menuItem3.Index = 1;
this.menuItem3.Text = "Save Image";
//
// button1
//
this.button1.Location = new System.Drawing.Point(76, 0);
this.button1.Name = "button1";
this.button1.TabIndex = 1;
this.button1.Text = "ZoomIn";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
this.button2.Location = new System.Drawing.Point(160, 0);
this.button2.Name = "button2";
this.button2.TabIndex = 2;
this.button2.Text = "ZoomOut";
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(476, 317);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.button2,
this.button1,
this.pictureBox1});
this.Menu = this.mainMenu1;
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// Der Haupteinstiegspunkt für die Anwendung.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void menuItem2_Click(object sender, System.EventArgs e)
{
if(ofd.ShowDialog() == DialogResult.OK)
{
this.pictureBox1.Image = Image.FromFile(ofd.FileName);
this.pictureBox1.Size = new Size(this.pictureBox1.Image.Width,this.pictureBox1.Image.Height);
}
}
//hier zoome ich rein
private void button1_Click(object sender, System.EventArgs e)
{
Graphics g = this.pictureBox1.CreateGraphics();
this.pictureBox1.Size = new Size(this.pictureBox1.Width+10,this.pictureBox1.Height+10);
rect = new Rectangle(0,0,this.pictureBox1.Width+10,this.pictureBox1.Height+10);
g.DrawImage(this.pictureBox1.Image,rect);
// this.pictureBox1.Refresh();
this.Invalidate();
}
//hier zoome ich raus
private void button2_Click(object sender, System.EventArgs e)
{
Graphics g = this.pictureBox1.CreateGraphics();
this.pictureBox1.Size = new Size(this.pictureBox1.Width-10,this.pictureBox1.Height-10);
rect = new Rectangle(0,0,this.pictureBox1.Width-10,this.pictureBox1.Height-10);
g.DrawImage(this.pictureBox1.Image,rect);
// this.pictureBox1.Refresh();
this.Invalidate();
}
private void Form1_Load(object sender, System.EventArgs e)
{
}
}
}