91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 285KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-07-22
  • 語言: 其他
  • 標簽: 雙緩沖??GDI+??碰撞??

資源簡介

一款繪制很漂亮的星空小球碰撞情景軟件。使用了兩種繪制方法:使用雙緩沖繪制和不使用雙緩沖繪制。可明顯對比出未使用雙緩沖的屏幕很閃,使用后屏幕顯示很流暢。(內附GDI+繪圖屏閃原因以及解決方案)

資源截圖

代碼片段和文件信息

/*導致畫面閃爍的關鍵原因分析:?

????
?*?一、繪制窗口由于大小位置狀態改變進行重繪操作時?

???
???????*?繪圖窗口內容或大小每改變一次,都要調用Paint事件進行重繪操作,該操作會使畫面重新刷新一次以維持窗口正常顯示。
???
?*?刷新過程中會導致所有圖元重新繪制,而各個圖元的重繪操作并不會導致Paint事件發生,因此窗口的每一次刷新只會調用
?????
?*?Paint事件一次。窗口刷新一次的過程中,每一個圖元的重繪都會立即顯示到窗口,因此整個窗口中,只要是圖元所在的位置,
????
?*?都在刷新,而刷新的時間是有差別的,閃爍現象自然會出現。?
???
?*?所以說,此時導致窗口閃爍現象的關鍵因素并不在于Paint事件調用的次數多少,而在于各個圖元的重繪。?
???
?*?根據以上分析可知,當圖元數目不多時,窗口刷新的位置也不多,窗口閃爍效果并不嚴重;當圖元數目較多時,
?????
?*?繪圖窗口進行重繪的圖元數量增加,繪圖窗口每一次刷新都會導致較多的圖元重新繪制,窗口的較多位置都在刷新,
?????
?*?閃爍現象自然就會越來越嚴重。特別是圖元比較大繪制時間比較長時,閃爍問題會更加嚴重,因為時間延遲會更長。?

?????
?*?解決上述問題的關鍵在于:窗口刷新一次的過程中,讓所有圖元同時顯示到窗口。?

??????二、進行鼠標跟蹤繪制操作或者對圖元進行變形操作時?

?????
????*?當進行鼠標跟蹤繪制操作或者對圖元進行變形操作時,Paint事件會頻繁發生,這會使窗口的刷新次數大大增加。
????
?*?雖然窗口刷新一次的過程中所有圖元同時顯示到窗口,但也會有時間延遲,因為此時窗口刷新的時間間隔遠小于圖元
?????
?*?每一次顯示到窗口所用的時間。因此閃爍現象并不能完全消除!?

????
?*?所以說,此時導致窗口閃爍現象的關鍵因素在于Paint事件發生的次數多少。?

????
?*?解決此問題的關鍵在于:設置窗體或控件的幾個關鍵屬性。
????
?*?this.Setstyle(Controlstyles.OptimizedDoubleBuffer?|?  ?

??????????????????Controlstyles.ResizeRedraw?|?

??????????????????Controlstyles.AllPaintingInWmPaint?true);?


*/



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;
using?System.Media;
using?System.Runtime.InteropServices;????


namespace?課程設計
{
????public?partial?class?Form1?:?Form
????{
????????#region?parameter
????????Bitmap?bmp?=?new?Bitmap(610?700);//在內存中創建一塊610?*?700大小的Bitmap

????????Graphics?g?g2;//定義兩畫布變量
????????Pen?mypen;//畫筆,用于話中間分隔線


????????Brush[]?p2?=?new?Brush[18];//定義一個筆刷數組用于繪畫各個圓
????????Brush[]?p1?=?new?Brush[255];//定義一個筆刷數組用于繪畫星星
?????????????
????????Point[]?point?=?new?Point[18];//定義圓的位置以及數量
????????Point[]?starsum?=?new?Point[250];//?定義星星位置,每側數量為50個

????????int?[]vx?=?new?int[18];//各個圓的移動速度
????????int?[]vy?=?new?int[18];

????????System.Random?rnd?=?new?System.Random();//用于取隨機數
????????int?myValue1;
????????int?myValue2;
????????int?myValue3;
????????int?myValue4;
????????int?myValue5;//?用于畫刷的隨機顏色變化

????????Color?mycolor?mycolor2?mycolor4?mycolor5;//自定義顏色

????????#endregion


????????public?Form1()
????????{
????????????InitializeComponent();
????????}

????????private?void?Form1_Paint(object?sender?PaintEventArgs?e)
????????{
????????????//填充背景色為黑色
????????????Color?newC?=?Color.Black;
????????????this.BackColor?=?newC;
????????}

????????private?void?Form1_Load(object?sender?EventArgs?e)
????????{
????????????//若要完全啟用雙緩沖則要設置窗體或者用于繪圖控件的屬性
????????????//可以將?OptimizedDoubleBuffer?和?AllPaintingInWmPaint?位設置為?true。但是,
????????????//啟用雙緩沖的首選方法是將該控件的?DoubleBuffered?屬性設置為?true,這會產生同樣的結果
????????????//如果要設置以上屬性,必須先設置UserPaint為true。
????????????//詳情可查閱MSDN里的Setstyle和Controlstyles。
????????????this.Setstyle(Controlstyles.UserPaint?|?Controlstyles.AllPaintingInWmPaint
?????????????????????????|?Controlstyles.OptimizedDoubleBuffe

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-05-24?10:47??雙緩沖?-?副本\
?????目錄???????????0??2012-05-24?10:47??雙緩沖?-?副本\bin\
?????目錄???????????0??2012-05-24?10:47??雙緩沖?-?副本\bin\Debug\
?????文件???????61440??2011-08-16?23:12??雙緩沖?-?副本\bin\Debug\AxInterop.WMPLib.dll
?????文件??????339968??2012-05-23?20:00??雙緩沖?-?副本\bin\Debug\Interop.WMPLib.dll
?????文件???????13312??2012-05-24?10:47??雙緩沖?-?副本\bin\Debug\課程設計_29030201018_馮鏗宇.exe
?????文件???????42496??2012-05-24?10:47??雙緩沖?-?副本\bin\Debug\課程設計_29030201018_馮鏗宇.pdb
?????文件???????14328??2012-05-24?10:48??雙緩沖?-?副本\bin\Debug\課程設計_29030201018_馮鏗宇.vshost.exe
?????文件?????????490??2009-06-11?05:14??雙緩沖?-?副本\bin\Debug\課程設計_29030201018_馮鏗宇.vshost.exe.manifest
?????文件???????15590??2012-05-24?10:47??雙緩沖?-?副本\Form1.cs
?????文件????????2166??2011-08-16?23:19??雙緩沖?-?副本\Form1.Designer.cs
?????文件????????6008??2011-08-16?23:19??雙緩沖?-?副本\Form1.resx
?????目錄???????????0??2012-05-24?10:47??雙緩沖?-?副本\obj\
?????目錄???????????0??2012-05-24?10:47??雙緩沖?-?副本\obj\Debug\
?????文件???????61440??2011-08-16?23:12??雙緩沖?-?副本\obj\Debug\AxInterop.WMPLib.dll
?????文件??????339968??2012-05-23?20:00??雙緩沖?-?副本\obj\Debug\Interop.WMPLib.dll
?????文件?????????180??2012-05-23?20:35??雙緩沖?-?副本\obj\Debug\Project.Properties.Resources.resources
?????目錄???????????0??2010-12-21?11:35??雙緩沖?-?副本\obj\Debug\Refactor\
?????目錄???????????0??2012-05-24?10:47??雙緩沖?-?副本\obj\Debug\TempPE\
?????文件????????4608??2010-12-19?22:02??雙緩沖?-?副本\obj\Debug\TempPE\Properties.Resources.Designer.cs.dll
?????文件????????4649??2012-05-24?10:48??雙緩沖?-?副本\obj\Debug\雙緩沖.csproj.FileListAbsolute.txt
?????文件?????????847??2011-08-16?23:19??雙緩沖?-?副本\obj\Debug\雙緩沖.csproj.GenerateResource.Cache
?????文件?????????544??2012-05-23?20:00??雙緩沖?-?副本\obj\Debug\雙緩沖.csproj.ResolveComReference.cache
?????文件????????2074??2010-12-16?12:45??雙緩沖?-?副本\obj\Debug\課程設計.Form1?(1).txt
?????文件?????????847??2010-12-16?12:05??雙緩沖?-?副本\obj\Debug\課程設計.Form1?(2).Cache
?????文件?????????180??2012-05-23?20:35??雙緩沖?-?副本\obj\Debug\課程設計.Form1.resources
?????文件????????2800??2011-08-16?23:12??雙緩沖?-?副本\obj\Debug\課程設計_29030201018_馮鏗宇.csproj.FileListAbsolute.txt
?????文件?????????847??2010-12-22?10:03??雙緩沖?-?副本\obj\Debug\課程設計_29030201018_馮鏗宇.csproj.GenerateResource.Cache
?????文件?????????544??2011-08-16?23:12??雙緩沖?-?副本\obj\Debug\課程設計_29030201018_馮鏗宇.csproj.ResolveComReference.cache
?????文件???????13312??2012-05-24?10:47??雙緩沖?-?副本\obj\Debug\課程設計_29030201018_馮鏗宇.exe
?????文件???????42496??2012-05-24?10:47??雙緩沖?-?副本\obj\Debug\課程設計_29030201018_馮鏗宇.pdb
............此處省略13個文件信息

評論

共有 條評論