Функция CreatePen GDI не работает в Windows 7, когда ширина пера составляет 3 или 4 (LineTo ничего не рисует). Он работает для 0 - 2 ширины. Во всех случаях использовался стиль пера PS_SOLID.Проблема с функцией CreatePen GDI в Windows 7
ответ
LineTo не включает конечную точку линии. Попробуйте использовать другую настройку endcap, чтобы узнать, не имеет значения.
Он возвращает ручку или NULL?
Вы считали, что используете CreatePenIndirect и структуру LOGPEN?
http://msdn.microsoft.com/en-us/library/dd183510(v=VS.85).aspx
http://msdn.microsoft.com/en-us/library/dd145041(v=VS.85).aspx
это просто отлично работает на моем компьютере, Windows 7 x64:
Option Explicit
Private Declare Function CreatePen Lib "gdi32" (_
ByVal nPenStyle As Long, _
ByVal nWidth As Long, _
ByVal crColor As Long) As Long
Private Declare Function LineTo Lib "gdi32" (_
ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (_
ByVal hDC As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (_
ByVal hObject As Long) As Long
Dim x As Long
Dim y As Long
Dim w As Long
Private Sub Command1_Click()
w = w + 1
Dim hpen As Long: hpen = CreatePen(0, w, 0)
Dim ret As Long: ret = SelectObject(Me.hDC, hpen)
If ret <> 0 Then
x = x + 10
y = y + 10
Call LineTo(Me.hDC, x, y)
End If
Call DeleteObject(hpen)
End Sub
нажмите кнопку еще раз
Благодарим вас за хорошую идею. Проблема решена путем замены вызова функции LineTo вызовом PolyLine. Я использовал простой API CreatePen, который не воспринимается как параметр ограничения конечной точки, как это делает ExtCreatePen. Между тем, этот код отлично работал на Vista и XP. Только Windows 7 с шириной 3 и выше имеет проблемы. – user486842
- 1. Проблема в непрерывном screencapturewithcursor в windows 7
- 2. Проблема с файлом Windows 7
- 3. C# Проблема с Windows 7
- 4. Проблема с MATLAB Engine Windows 7
- 5. Проблема с резьбой в Windows 7 Телефон
- 6. Проблема с прокруткой в Windows Phone 7?
- 7. Проблема компиляции с Emscripten в Windows 7
- 8. Почему моя игра Win32 gdi + неэффективна в Windows 7?
- 9. Ускорение GDI в Windows 7/Рисование к битовой карте памяти
- 10. MFC: проблематичная проблема с GDI +
- 11. GDI + Проблема при рисовании таблицы
- 12. JavaScript: проблема с функцией
- 13. Командная строка Windows 7 Проблема
- 14. Проблема SAPI и Windows 7
- 15. Проблема с функцией Javascript Date в IE 7, возвращает NaN
- 16. Проблема с записью Windows Phone 7
- 17. Windows Phone 7 проблема с потоком
- 18. Windows Phone 7 Проблема с WebBrowserTask
- 19. Проблема с API GetLastError для Windows 7
- 20. Cordova Проблема с установкой: на Windows 7
- 21. C# GDI + проблема рендеринга
- 22. Windows Phone 7 Проблема с всплывающими окнами
- 23. Windows Phone 7: проблема с веб-сервисом
- 24. doParallel проблема с встроенной функцией в Windows 7 (работает в Linux)
- 25. Проблема с установкой strongloop на Windows 7
- 26. Проблема с быстрым щелчком на Windows 7
- 27. Проблема связи с функциями оболочки Windows 7
- 28. GDI + проблема скорости gif
- 29. GDI Leak Проблема
- 30. MFC CPen :: ширина CreatePen линии
Спасибо Mark за хорошую идею. Проблема решена путем замены вызова функции LineTo вызовом PolyLine. Я использовал простой API CreatePen, который не воспринимается как параметр ограничения конечной точки, как это делает ExtCreatePen. Между тем, этот код отлично работал на Vista и XP. Только Windows 7 с шириной 3 и выше имеет проблемы. - – user486842