Tesulakata
Tổng số bài gửi : 141 Experience : 240 Đã được cảm ơn : 1 Join date : 18/05/2011 Age : 48 Đến từ : Heaven
| Tiêu đề: Double Bufferv- Chống giựt hình, nháy hình trong form C# - ĐỒ HỌA Wed May 18, 2011 10:16 pm | |
| | | | | [color:b87c=#090]Double Bufferv- Chống giựt hình, nháy hình trong form C#
Nguồn: http://k14ktqs.cntt.in/
Link demo trong file đính kèm http://k14ktqs.cntt.in/
Các bài liên quan tại
http://k14ktqs.cntt.in/
CÁI NÀY LÀ TRONG C# NHƯNG TRONG XỬ LÝ ẢNH XÀI TỚI NÊN MÌNH UP VÔ ĐÂY
Khi load ảnh liên tục trên Form sẽ có hiện tượng giật hình, cách khắc phục
Cách 1: cách đơn giản để chống giật màn hình là chọn thuộc tính Bouble buffer của Form là true; (đơn giản, có hiệu quả với những trường hợp ít load hình liên tục còn về lâu về dài thì chưa biết) Cách 2: Khá hiệu quả, thường được các coder sử dụng là dùng 1 BITMAP làm bộ đệm, vẽ tất cả lên BITMAP rồi vẽ BITMAP đó lên form, tránh vẽ liên tục lên form
Trong sự kiện Paint dùng code sau :)
[PHP] private void DoubleBuffering_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { Graphics g; Bitmap drawing = null; if (chkDoubleBuffer.Checked) { drawing = new Bitmap(this.Width, this.Height, e.Graphics); g = Graphics.FromImage(drawing); } else { g = e.Graphics; } g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; // Draw a rectangle. Pen drawingPen = new Pen(Color.Black, 10); g.FillRectangle(Brushes.PaleTurquoise , new Rectangle(new Point(0, 0),this.ClientSize)); g.DrawEllipse(drawingPen, 50, 50, 50 + extraSize, 50 + extraSize); if (chkDoubleBuffer.Checked) { e.Graphics.DrawImageUnscaled(drawing, 0, 0); g.Dispose(); } } [/PHP]
[DOWNLOAD][url="http://www.mediafire.com/?mymncmnyngu"]source code[/URL][/DOWNLOAD]
sưu tầm[/QUOTE]
| | | |
|
|