黄色在线观看视频-黄色在线免费看-黄色在线视频免费-黄色在线视频免费看-免费啪啪网-免费啪啪网站

首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
華為認證 | Java認證
公務員 | 報關員 | 銀行從業資格 | 證券從業資格 | 期貨從業資格 | 司法考試 | 法律顧問 | 導游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業資格 | 廣告師職業水平
駕駛員 | 網絡編輯
衛生資格 | 執業醫師 | 執業藥師 | 執業護士
會計從業資格考試會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師
注冊資產評估師 | 高級會計師 | ACCA | 統計師 | 精算師 | 理財規劃師 | 國際內審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監理工程師 | 安全工程師
質量工程師 | 物業管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師
設備監理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環境影響評價師 | 環保工程師
城市規劃師 | 公路監理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
您現在的位置: 考試吧(Exam8.com) > 計算機等級考試 > 計算機二級 > Delphi > 復習資料 > 正文

2011計算機等級考試Delphi:Delphi圖形圖像編程

來源:考試吧Exam8.com) 2010-10-27 14:23:49 考試吧:中國教育培訓第一門戶 模擬考場
本章將介紹以下內容:TCanvas,TPen,TBrush,TColor對象的方法及屬性; 繪圖功能的實現;TImage,TPicture,TBitBtn,TBitmap部件的方法及屬性;圖像觀測及處理。

  5.2.3 繪圖功能的實現

  繪圖軟件常根據用戶的要求改變繪圖工具。Graphex.dpr例程中,當用戶按下某個按鈕時,可選擇繪圖工具中的畫筆或畫刷,在程序類型說明部分定義了五種繪圖工具。

  type

  TDrawingTool = (dtLine,dtRectangle,dtEllips,dtRoundRect,dtPolygon);

  當選中某種按鈕,則選中了相應的繪圖工具,如:

  procedure TForm1.LineButtonClick(Sender: TObject);

  begin

  DrawingTool := dtLine;

  end;

  procedure TForm1.RectangleButtonClick(Sender: TObject);

  begin

  DrawingTool := dtRectangle;

  end;

  procedure TForm1.EllipseButtonClick(Sender: TObject);

  begin

  DrawingTool := dtEllipse;

  end;

  procedure TForm1.RoundRectButtonClick(Sender: TObject);

  begin

  DrawingTool := dtRoundRect;

  end;

  procedure TForm1.PolygonButtonClick(Sender: TObject);

  begin

  DrawingTool :=dtPolygon;

  end;

  DrawShape過程定義了每種繪圖工具的動作:

  procedure TForm1.DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);

  begin

  with Image.Canvas do

  begin

  Pen.Mode := AMode;

  case DrawingTool of

  dtLine: begin

  MoveTo(TopLeft.X, TopLeft.Y);

  LineTo(BottomRight.X, BottomRight.Y);

  end;

  dtRectangle: Rectangle(TopLeft.X, TopLeft.Y, BottomRight.X, BottomRight.Y);

  dtEllipse: Ellipse(TopLeft.X, TopLeft.Y, BottomRight.X, BottomRight.Y);

  dtRoundRect: RoundRect(TopLeft.X, TopLeft.Y, BottomRight.X, BottomRight.Y,

  (TopLeft.X - BottomRight.X) div 2, (TopLeft.Y - BottomRight.Y) div 2);

  dtPolygon:Polygon([Point(0,0),TopLeft,BottomRight]); end;

  end;

  end;

  程序剛運行時,只有一個工具欄。當用戶單擊畫筆和畫刷時,則出現相應的工具欄,如圖5.4。其代碼如下:

  procedure TForm1.PenButtonClick(Sender: TObject);

  begin

  PenBar.Visible := PenButton.Down;

  end;

  procedure TForm1.BrushButtonClick(Sender: TObject);

  begin

  BrushBar.Visible := BrushButton.Down;

  end;

  在設計繪圖程序時,還要解決一些問題。如為了在鼠標移動時能觀測圖形的變化,我們定義了OnMouseMove事件。但會出現這樣的現象,當鼠標進入繪圖區時,用戶未按下鼠標鍵,畫布上卻出現繪制的圖形,這是我們不希望看到的。其原因是沒有對鼠標按鈕是否按下進行判斷。因此在窗體對象中定義了drawing的域,當鼠標按鈕按下時,drawing 設置成真值。只有drawing為真,鼠標移動才執行繪圖功能;當鼠標鍵松開時,drawing設置成假,鼠標移動將不執行繪圖動作。

  另外一個問題是, 我們希望得到的是鼠標按鈕按下和松開這兩點所形成的圖形,但OnMouseMove卻把鼠標軌跡上各點與起始點所形成的所有圖形畫在屏幕上,這同樣是我們不希望看到的,為了解決這些問題,程序定義了鼠標的三個事件:

  procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;

  Shift: TShiftState; X, Y: Integer);

  begin

  Drawing := True;

  Image.Canvas.MoveTo(X, Y);

  Origin := Point(X, Y);

  MovePt := Origin;

  OriginPanel.Caption := Format('Origin: (%d, %d)', [X, Y]);

  end;

  procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;

  Shift: TShiftState; X, Y: Integer);

  begin

  if Drawing then

  DrawShape(Origin, Point(X, Y), pmCopy);

  Drawing := False;

  end;

  procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

  Y: Integer);

  begin

  if Drawing then

  begin

  DrawShape(Origin, MovePt, pmNotXor);

  MovePt := Point(X, Y);

  DrawShape(Origin, MovePt, pmNotXor);

  end;

  MovePt用來記錄鼠標當前位置。當下次鼠標移動時, 就能在上次鼠標繪制的圖形上畫一個形狀、大小一樣的圖形,并把畫筆顏色設置成PmNotXor,使上次繪制的圖形顏色變成了屏幕顏色,從而達到“橡皮擦”的效果。

  將畫筆、畫刷的Style屬性設置成用戶希望的值,可實現對畫筆和畫刷風格的選擇。

  procedure TForm1.SetBrushStyle(Sender: TObject);

  begin

  with Image.Canvas.Brush do

  begin

  if Sender = SolidBrush then Style := bsSolid

  else if Sender = ClearBrush then Style := bsClear

  else if Sender = HorizontalBrush then Style := bsHorizontal

  else if Sender = VerticalBrush then Style := bsVertical

  else if Sender = FDiagonalBrush then Style := bsFDiagonal

  else if Sender = BDiagonalBrush then Style := bsBDiagonal

  else if Sender = CrossBrush then Style := bsCross

  else if Sender = DiagCrossBrush then Style := bsDiagCross;

  end;

  procedure TForm1.SetPenStyle(Sender: TObject);

  begin

  with Image.Canvas.Pen do

  begin

  if Sender = SolidPen then Style := psSolid

  else if Sender = DashPen then Style := psDash

  else if Sender = DotPen then Style := psDot

  else if Sender = DashDotPen then Style := psDashDot

  else if Sender = DashDotDotPen then Style := psDashDotDot

  else if Sender = ClearPen then Style := psClear;

  end;

  end;

上一頁  1 2 3 4 5 下一頁
  相關推薦:2010年9月計算機等級考試試題及答案解析專題
       預告:名師解析2010年9月計算機等級考試試題答案
       2010年9月計算機等級考試成績查詢時間及入口
       2010年9月計算機等考成績查詢短信免費提醒開通
文章搜索
版權聲明:如果計算機等級考試網所轉載內容不慎侵犯了您的權益,請與我們聯系800@exam8.com,我們將會及時處理。如轉載本計算機等級考試網內容,請注明出處。
主站蜘蛛池模板: 亚洲波多野结衣 | 高清一级做a爱过程不卡视频 | 91视频一区二区三区 | 欧美播放| 亚洲伊人久久综合影院2021 | 亚洲欧美日韩中字综合 | 国产日韩欧美在线视频免费观看 | 热热色原原网站 | 99在线观看巨臀大臀视频 | 人成午夜性刺激免费 | 吃奶呻吟打开双腿做受动态图 | 成人午夜免费福利视频 | 天天射天天摸 | 夜夜做日日做夜夜爽 | 欧美白人黑人xxxx猛交 | 一菊综合网成人综合网 | 成人激情在线 | www.五月| 在线有码 | 韩日精品 | 伦理片日韩 | 久久天天躁夜夜躁狠狠85台湾 | 国产一区a| 欧美精品亚洲精品日韩专 | 青青草国产一区二区三区 | 色综合天天综合网国产人 | 国产激情一区二区三区在线观看 | 天天干天天玩天天操 | 中文字幕制服 | 亚洲精品乱码中文字幕无线 | 欧美videos13_14 | 国产盗摄精品一区二区 | 日韩在线a视频免费播放 | 靠逼久久 | 免费无遮挡毛片 | 中国一级特黄视频 | 成年人在线免费观看 | 国产日韩欧美视频 | 成人永久福利在线观看不卡 | 亚洲成人激情小说 | 国产高清片 |