GDI+ и заливка с помощью методов библиотеки GDI32.dll - C#
Формулировка задачи:
Делаю аналог Paint, возникла проблема: необходимо залить область цветом или штрихованной кистью. Заливаю при помощи методов из gdi32.dll,
все ок, а затем, при перерисовке, все залитое пропадает, собсно я так думаю, что нужно делать битмап залитой области, а затем помещать его в Graphics при перерисовке формы. При попытке сохранить битмап из панели, сохраняетс только контуры фигуры, а заливка - нет.
Прошу помощи: как можно получить битмап области, которая залита с помощью FillSurface? Заранее спасибо!
Вот кусок кода:// В случае, еси была нажата кнопка заливки, заливаем область и выход из функции 02.if*(this.IsFilledClicked) 03.{ 04. Graphics g = Graphics.FromHwnd(this.PaintPanel.Handle); 05. IntPtr hdc = g.GetHdc(); 06. // Получаем индекс текущей кисти 07. HatchNum =*this.Bcp.brushNum; 08. // Заливка штриховой кистью 09. if*(HatchNum < 6) 10. { 11. int*num =*this.MainColor.ToArgb(); 12. num=-num; 13. IntPtr hBrush = CreateHatchBrush(HatchNum,num); 14. SelectObject(hdc, hBrush); 15. FillSurface(hdc, e.X, e.Y, GetPixel(hdc, e.X, e.Y), 1); 16. g.ReleaseHdc(hdc); 17. DeleteObject(hBrush); 18. } 19. // СОхраняет все, кроме заливки 20. this.PaintPanel.DrawToBitmap(bmp,*new*Rectangle(0, 0, bmp.Width, bmp.Height)); 21. bmp.Save(@"NewBmp1.bmp"); 22. g.Dispose(); 23. return;
Решение задачи: «GDI+ и заливка с помощью методов библиотеки GDI32.dll»
textual
Листинг программы
using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; namespace WindowsFormsApplication34 { public partial class frmMain : Form { public frmMain ( ) { InitializeComponent(); this.Paint += new PaintEventHandler( frmMain_Paint ); } void frmMain_Paint ( object sender, PaintEventArgs e ) { using ( var brush = new HatchBrush( HatchStyle.DottedGrid, Color.Red, Color.Black ) ) e.Graphics.FillRectangle( brush, this.ClientRectangle ); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д