PDA

View Full Version : سوال: پاک شدن شکل ها بعد از قرار گیری فرمی در روی فرم



araz_s
یک شنبه 31 مرداد 1389, 03:01 صبح
وقتی برنامه رو اجرا می کنم و یه فرم دیگه رو فرم من میاد، اشکال محو میشن.
با توجه به این که این تاپیک مطرح شده ولی مشکل من حل نشد.
اگه ممکنه یه نمونه کد بزارین.
از کمکتون ممنونم.

mmd2009
یک شنبه 31 مرداد 1389, 03:17 صبح
با سلام.

میشه نمونه کدی که شما داری و این مشکل رو داری بدی ما نگاش کنیم ! :متفکر:

araz_s
یک شنبه 31 مرداد 1389, 03:28 صبح
با سلام.

میشه نمونه کدی که شما داری و این مشکل رو داری بدی ما نگاش کنیم ! :متفکر:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;

namespace WindowsFormsApplication14
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
}


private void button1_Click(object sender, EventArgs e)
{

Graphics G = CreateGraphics();
Pen pen = new Pen(Color.Blue, 1);
HatchBrush brush = new HatchBrush(HatchStyle.Cross, Color.Red, Color.Yellow);
Font font = new Font("Arial", 25);
G.DrawString("Graphics", font, Brushes.Red, 20, 20);
G.TranslateTransform(200, 200);
G.ScaleTransform(1, -1);
G.RotateTransform(30);
G.DrawLine(Pens.Brown, 0, 0, 150, 0);
G.DrawLine(Pens.Brown, 0, 0, 0, 150);
G.FillRectangle(brush, 10, -60, 100, 50);
G.DrawRectangle(pen, 10, -60, 100, 50);
G.FillEllipse(brush, 10, 10, 100, 50);
G.DrawEllipse(pen, 10, 10, 100, 50);
G.DrawArc(Pens.Navy, -60, 10, 50, 50, 0, 180);
G.Dispose();
}
}
}

arefba
یک شنبه 31 مرداد 1389, 04:05 صبح
من همین الان ویندوز زدم کسی نیست این کدا رو تست بزنه

مهدی فرزاد
یک شنبه 31 مرداد 1389, 15:24 عصر
سلام
کدت رو بشکل زیر اصلاح کن


private bool bolMyPaint;
private void button1_Click(object sender, EventArgs e)
{
this.MyPaint();
this.bolMyPaint = true;
}
 
private void MyPaint()
{
Graphics G = CreateGraphics();
Pen pen = new Pen(Color.Blue, 1);
HatchBrush brush = new HatchBrush(HatchStyle.Cross, Color.Red, Color.Yellow);
Font font = new Font("Arial", 25);
G.DrawString("Graphics", font, Brushes.Red, 20, 20);
G.TranslateTransform(200, 200);
G.ScaleTransform(1, -1);
G.RotateTransform(30);
G.DrawLine(Pens.Brown, 0, 0, 150, 0);
G.DrawLine(Pens.Brown, 0, 0, 0, 150);
G.FillRectangle(brush, 10, -60, 100, 50);
G.DrawRectangle(pen, 10, -60, 100, 50);
G.FillEllipse(brush, 10, 10, 100, 50);
G.DrawEllipse(pen, 10, 10, 100, 50);
G.DrawArc(Pens.Navy, -60, 10, 50, 50, 0, 180);
G.Dispose();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
if (this.bolMyPaint == true)
this.MyPaint();
}

araz_s
یک شنبه 31 مرداد 1389, 17:31 عصر
سلام
کدت رو بشکل زیر اصلاح کن


private bool bolMyPaint;
private void button1_Click(object sender, EventArgs e)
{
this.MyPaint();
this.bolMyPaint = true;
}
 
private void MyPaint()
{
Graphics G = CreateGraphics();
Pen pen = new Pen(Color.Blue, 1);
HatchBrush brush = new HatchBrush(HatchStyle.Cross, Color.Red, Color.Yellow);
Font font = new Font("Arial", 25);
G.DrawString("Graphics", font, Brushes.Red, 20, 20);
G.TranslateTransform(200, 200);
G.ScaleTransform(1, -1);
G.RotateTransform(30);
G.DrawLine(Pens.Brown, 0, 0, 150, 0);
G.DrawLine(Pens.Brown, 0, 0, 0, 150);
G.FillRectangle(brush, 10, -60, 100, 50);
G.DrawRectangle(pen, 10, -60, 100, 50);
G.FillEllipse(brush, 10, 10, 100, 50);
G.DrawEllipse(pen, 10, 10, 100, 50);
G.DrawArc(Pens.Navy, -60, 10, 50, 50, 0, 180);
G.Dispose();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
if (this.bolMyPaint == true)
this.MyPaint();
}

سلام
مهدی جان این کد هم مثل کد خودم همون مشکل رو داره.
وقتی یه فرم دیگه میاد روش تصاویر از بین میرن.
شما اینو تست کردین؟

مهدی فرزاد
یک شنبه 31 مرداد 1389, 17:43 عصر
سلام
مهدی جان این کد هم مثل کد خودم همون مشکل رو داره.
وقتی یه فرم دیگه میاد روش تصاویر از بین میرن.
شما اینو تست کردین؟

نه عزیزم با مال شما فرق داره
یکم دقت کن
اولا متد Form1_Paint بهش اضافه شده
دوم : من کدهات رو توی متدی به نام MyPaint گذاشتم و متغییری از نوع bool تعریف کردم به نام bolMayPaint و در متد button1_Click اول متد MyPaint اجرا میشه و بعد مقدار bolMyPaint برار true میشه
در آخر در متددForm1_Paint با یک دستور if چک میشه اگه bolMyPaint برابر true بود (یعنی کلیک کرده بودی) متد MyPaint فراخانی میشه و اون باعث میشه شکل ها پاک نشن

gwbasic
یک شنبه 31 مرداد 1389, 18:14 عصر
کد نوشته شده درسته ولی شما احتمالا یک اشتباه کردی ، که دو راه داری که یکیش اینه :
برو تو پنجره Peroperties قسمت رویدادها Event و جلوی رویداد Paint بنویس Form1_Paint

araz_s
یک شنبه 31 مرداد 1389, 23:52 عصر
از کمکتون ممنونم مهدی جان.
با راه حل gwbasic (http://www.barnamenevis.org/forum/member.php?u=25140) عزیز مشکل حل شد.
کد شما مشکلی نداشت.
از کمک همه ممنونم.