Alakzatok eltünése

Alakzatok eltünése
2009-09-29T15:50:33+02:00
2009-09-29T20:49:10+02:00
2022-11-15T04:10:39+01:00
evo x
Sziasztok,

az a problémám,hogy rajzolok egy panelra (2d-ben) ,és ha frissítősik a form,vagy csak leteszem tálcára ,akkor eltünik a rajzolásom, én ezt a következő kóddal próbáltam optimalizálni,viszont a kód maga is frissíti a formot,szóval nem kerül a képbe a rajz:


Graphics ^ g; Bitmap^ bmp = gcnew Bitmap(640, 480); g = this->panel1->CreateGraphics(); Pen^ pen = gcnew Pen(Color::Black); g->DrawLine(pen,x1+1,y1+1,x2,y2); this->DrawToBitmap(bmp, Rectangle(0, 0, 640 ,480)); this->panel1->BackgroundImage = bmp;

A segítséget nagyon megköszönöm!!!!
Mutasd a teljes hozzászólást!
using System.Drawing; using System.Windows.Forms; using System.Collections.Generic; namespace WindowsFormsApplication14 { public partial class Form1 : Form { private bool shouldPaint; private Graphics g; private Pen pen; private List<Point> list; public Form1() { InitializeComponent(); g = CreateGraphics(); pen = new Pen(Color.Black); list = new List<Point>(); } private void Form1_MouseDown(object sender, MouseEventArgs e) { shouldPaint = true; } private void Form1_MouseUp(object sender, MouseEventArgs e) { shouldPaint = false; } private void Form1_MouseMove(object sender, MouseEventArgs e) { if(shouldPaint) { g.DrawEllipse(pen, e.X, e.Y, 10, 10); list.Add(new Point(e.X, e.Y)); } } private void Form1_Paint(object sender, PaintEventArgs e) { foreach (var item in list) { g.DrawEllipse(pen, item.X, item.Y, 10, 10); } } } }
Mutasd a teljes hozzászólást!

  • Ird felul a panel Draw, Paint, vagy valami hasonlo nevu metodusat es onnan vegezd a rajzolast. Valahanyszor a rendszer ujrafesteti az ablakot a te metodusod fog meghivodni, ezert nem fog eltunni a rajzod...
    Mutasd a teljes hozzászólást!
  • Nekem ez a függvény rajlzol dinamikusan egérrel,de nem tudom hogy an kellene átszerkeszteni,hogy jó legyen? :

    private: System::Void Form1_Load(System::Object^ sender, System::Windows::Forms::MouseEventArgs ^ e) { ..... }
    Mutasd a teljes hozzászólást!

  • using System.Windows.Forms; using System.Drawing; namespace WindowsFormsApplication7 { public partial class Form1 : Form { private Graphics graphics; private Pen pen; public Form1() { InitializeComponent(); graphics = CreateGraphics(); pen = new Pen(Color.Black); } protected override void OnPaint(PaintEventArgs e) { graphics.DrawLine(pen, 100,100,200,200); base.OnPaint(e); } } }
    Mutasd a teljes hozzászólást!
  • Gondoltam erre is,de ez nekem azért nem jó mert és egérrel rajzolom az alakzatokat,és nem tudom összekötni a paint eseménnyel mindet.
    Mutasd a teljes hozzászólást!
  • using System.Drawing; using System.Windows.Forms; using System.Collections.Generic; namespace WindowsFormsApplication14 { public partial class Form1 : Form { private bool shouldPaint; private Graphics g; private Pen pen; private List<Point> list; public Form1() { InitializeComponent(); g = CreateGraphics(); pen = new Pen(Color.Black); list = new List<Point>(); } private void Form1_MouseDown(object sender, MouseEventArgs e) { shouldPaint = true; } private void Form1_MouseUp(object sender, MouseEventArgs e) { shouldPaint = false; } private void Form1_MouseMove(object sender, MouseEventArgs e) { if(shouldPaint) { g.DrawEllipse(pen, e.X, e.Y, 10, 10); list.Add(new Point(e.X, e.Y)); } } private void Form1_Paint(object sender, PaintEventArgs e) { foreach (var item in list) { g.DrawEllipse(pen, item.X, item.Y, 10, 10); } } } }
    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