Delphi 与 DirectX 之 DelphiX(20): TDirectDrawSurface.FillRect…

  • A+
所属分类:[开发技巧]
  1. TDirectDrawSurface.PokeLine();
  2. TDirectDrawSurface.PokeLinePolar();
  3. TDirectDrawSurface.PokeBox();
  4. TDirectDrawSurface.PokeBlendPixel();
  5. TDirectDrawSurface.PokeCircle();
  6. TDirectDrawSurface.PokeEllipse();
  7. TDirectDrawSurface.PokeFilledEllipse();
  8. TDirectDrawSurface.PokeWuLine();
  9. TDirectDrawSurface.PokeVLine();
  10. TDirectDrawSurface.DoRotate();

其中 Fill 在前面每个例子中都有用到; 另外注意: 这几个函数中的颜色格式有点乱:
Fill 与 FillRect 使用的是非 Delphi 的颜色格式, 它们使用的红色应该是: $FF0000;
FillRectAlpha、FillRectAdd、FillRectSub 可以使用 Delphi 的颜色, 红色可以是: $0000FF 或 clRed.

本例效果图:

代码文件:

  1. unit Unit1;  
  2. interface  
  3. uses  
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  5. Dialogs, StdCtrls, DXDraws;  
  6. type  
  7. TForm1 = class(TForm)  
  8. DXDraw1: TDXDraw;  
  9. Button1: TButton;  
  10. Button2: TButton;  
  11. Button3: TButton;  
  12. Button4: TButton;  
  13. Button5: TButton;  
  14. procedure FormCreate(Sender: TObject);  
  15. procedure Button1Click(Sender: TObject);  
  16. procedure Button2Click(Sender: TObject);  
  17. procedure Button3Click(Sender: TObject);  
  18. procedure Button4Click(Sender: TObject);  
  19. procedure Button5Click(Sender: TObject);  
  20. private  
  21. { Private declarations }  
  22. public  
  23. { Public declarations }  
  24. end;  
  25. var  
  26. Form1: TForm1;  
  27. implementation  
  28. {$R *.dfm}  
  29. const  
  30. ImgPath1 = 'C:\Temp\Test.jpg';  
  31. procedure TForm1.Button1Click(Sender: TObject);  
  32. var  
  33. MySurface: TDirectDrawSurface;  
  34. begin  
  35. MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw);  
  36. MySurface.LoadFromFile(ImgPath1);  
  37. DXDraw1.Surface.Fill(0);  
  38. DXDraw1.Surface.Draw(0,0,MySurface);  
  39. DXDraw1.Flip;  
  40. FreeAndNil(MySurface);  
  41. end;  
  42. procedure TForm1.Button2Click(Sender: TObject);  
  43. var  
  44. MySurface: TDirectDrawSurface;  
  45. R: TRect;  
  46. begin  
  47. MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw);  
  48. MySurface.LoadFromFile(ImgPath1);  
  49. DXDraw1.Surface.Fill(0);  
  50. DXDraw1.Surface.Draw(00, MySurface);  
  51. r := Bounds(1010, DXDraw1.Width - 20, DXDraw1.Height - 20);  
  52. DXDraw1.Surface.FillRect(r, $FF0000);  
  53. DXDraw1.Flip;  
  54. FreeAndNil(MySurface);  
  55. end;  
  56. procedure TForm1.Button3Click(Sender: TObject);  
  57. var  
  58. MySurface: TDirectDrawSurface;  
  59. r: TRect;  
  60. begin  
  61. MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw);  
  62. MySurface.LoadFromFile(ImgPath1);  
  63. DXDraw1.Surface.Fill(0);  
  64. DXDraw1.Surface.Draw(00, MySurface);  
  65. r := Bounds(1010, DXDraw1.Width - 20, DXDraw1.Height - 20);  
  66. DXDraw1.Surface.FillRectAlpha(r, $0000FF128);  
  67. DXDraw1.Flip;  
  68. FreeAndNil(MySurface);  
  69. end;  
  70. procedure TForm1.Button4Click(Sender: TObject);  
  71. var  
  72. MySurface: TDirectDrawSurface;  
  73. r: TRect;  
  74. begin  
  75. MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw);  
  76. MySurface.LoadFromFile(ImgPath1);  
  77. DXDraw1.Surface.Fill(0);  
  78. DXDraw1.Surface.Draw(00, MySurface);  
  79. r := Bounds(1010, DXDraw1.Width - 20, DXDraw1.Height - 20);  
  80. DXDraw1.Surface.FillRectAdd(r, $0000FF255);  
  81. DXDraw1.Flip;  
  82. FreeAndNil(MySurface);  
  83. end;  
  84. procedure TForm1.Button5Click(Sender: TObject);  
  85. var  
  86. MySurface: TDirectDrawSurface;  
  87. r: TRect;  
  88. begin  
  89. MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw);  
  90. MySurface.LoadFromFile(ImgPath1);  
  91. DXDraw1.Surface.Fill(0);  
  92. DXDraw1.Surface.Draw(00, MySurface);  
  93. r := Bounds(1010, DXDraw1.Width - 20, DXDraw1.Height - 20);  
  94. DXDraw1.Surface.FillRectSub(r, $0000FF255);  
  95. DXDraw1.Flip;  
  96. FreeAndNil(MySurface);  
  97. end;  
  98. procedure TForm1.FormCreate(Sender: TObject);  
  99. begin  
  100. Button1.Caption := '原始图片';  
  101. Button2.Caption := 'FillRect';  
  102. Button3.Caption := 'FillRectAlpha';  
  103. Button4.Caption := 'FillRectAdd';  
  104. Button5.Caption := 'FillRectSub';  
  105. end;  
  106. end.  

下载文件:

 

200902111410472002.rar

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
广告也精彩
avatar
广告也精彩

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: