court.cpp
上传用户:szsg028
上传日期:2022-08-01
资源大小:12k
文件大小:3k
源码类别:

GDI/图象编程

开发平台:

Visual C++

  1. #include "court.h"
  2. #include <stdio.h>
  3. court::court()
  4. {
  5. m_fontMarcador = CreateFont(130, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Courier");
  6. m_penMargenes = CreatePen(PS_SOLID, 1, RGB(255, 255, 255));
  7. m_brushFondo = (HBRUSH)GetStockObject(BLACK_BRUSH);
  8. m_brushBlanco = (HBRUSH)GetStockObject(WHITE_BRUSH);
  9. }
  10. court::~court()
  11. {
  12. DeleteObject(m_fontMarcador);
  13. DeleteObject(m_penMargenes);
  14. DeleteObject(m_brushFondo);
  15. DeleteObject(m_brushBlanco);
  16. }
  17. void court::draw(HDC hDC)
  18. {
  19. HBRUSH hOldBrush;
  20. HFONT hOldFont;
  21. HPEN hOldPen;
  22. COLORREF cOldColor;
  23. char contador1 = 0;
  24. char contador2 = 0;
  25. int i = 0;
  26. //dibujo el fondo negro
  27. hOldBrush = (HBRUSH)SelectObject(hDC, m_brushFondo);
  28. Rectangle(hDC, getX()-getWidth()/2, getY()-getHeight()/2, getWidth(), getHeight());
  29. //dibujo los puntajes
  30. hOldFont = (HFONT)SelectObject(hDC, m_fontMarcador);
  31. cOldColor = SetBkColor(hDC, RGB(0, 0, 0));
  32. SetTextColor(hDC, RGB(255, 255, 255));
  33. SetTextAlign(hDC, TA_CENTER | TA_TOP);
  34. char bufScore1[2];
  35. sprintf(bufScore1, "%d", getScoreP1());
  36. TextOut(hDC, (getWidth()/2 - 40), (getMarginTop()-110), (LPCSTR)bufScore1, strlen(bufScore1)); 
  37. char bufScore2[2];
  38. sprintf(bufScore2, "%d", getScoreP2());
  39. TextOut(hDC, (getWidth()/2 + 34), (getMarginTop()-110), (LPCSTR)bufScore2, strlen(bufScore2)); 
  40. //pinto las l韓eas del borde de la cancha
  41. hOldPen = (HPEN)SelectObject(hDC, m_penMargenes);
  42. MoveToEx(hDC, 0, getMarginTop(), 0);
  43. LineTo(hDC, getWidth(), getMarginTop());
  44. MoveToEx(hDC, 0, getMarginBottom(), 0);
  45. LineTo(hDC, getWidth(), getMarginBottom());
  46. //pinto la linea transversal
  47. SelectObject(hDC, m_brushBlanco);
  48. while (i <= getMarginBottom())
  49. {
  50. Ellipse(hDC, getWidth()/2 - 2, i, getWidth()/2 + 2, i + 4 );
  51. i += 15; 
  52. }
  53. //vuelvo a los pens, brushes, fuentes y colores originales
  54. SetBkColor(hDC, cOldColor);
  55. SelectObject(hDC, hOldBrush);
  56. SelectObject(hDC, hOldFont);
  57. SelectObject(hDC, hOldPen);
  58. }
  59. void court::setMargins(int marginLeft, int marginRight, int marginTop, int marginBottom)
  60. {
  61. m_iMarginLeft = marginLeft;
  62. m_iMarginRight = marginRight;
  63. m_iMarginTop = marginTop;
  64. m_iMarginBottom = marginBottom;
  65. }
  66. void court::setAxisPad1(int valor)
  67. {
  68. m_iAxisPad1 = valor;
  69. }
  70. void court::setAxisPad2(int valor)
  71. {
  72. m_iAxisPad2 = valor;
  73. }
  74. void court::resetScores()
  75. {
  76. m_iBuffScoreP1 = 0;
  77. m_iBuffScoreP2 = 0;
  78. }
  79. int court::getScoreP1()
  80. {
  81. return m_iBuffScoreP1;
  82. }
  83. int court::getScoreP2()
  84. {
  85. return m_iBuffScoreP2;
  86. }
  87. int court::getMarginLeft()
  88. {
  89. return m_iMarginLeft;
  90. }
  91. int court::getMarginRight()
  92. {
  93. return m_iMarginRight;
  94. }
  95. int court::getMarginTop()
  96. {
  97. return m_iMarginTop;
  98. }
  99. int court::getMarginBottom()
  100. {
  101. return m_iMarginBottom;
  102. }
  103. int court::getAxisPad1()
  104. {
  105. return m_iAxisPad1;
  106. }
  107. int court::getAxisPad2()
  108. {
  109. return m_iAxisPad2;
  110. }
  111. void court::P1Scores()
  112. {
  113. m_iBuffScoreP1++;
  114. }
  115. void court::P2Scores()
  116. {
  117. m_iBuffScoreP2++;
  118. }
  119. void court::refreshScores()
  120. {
  121. m_iScoreP1 = m_iBuffScoreP1;
  122. m_iScoreP2 = m_iBuffScoreP2;
  123. }