HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 25.02.2024, 04:44
Vintik
Познавший АНТИЧАТ
Регистрация: 18.08.2017
Сообщений: 1,568
С нами: 4598023

Репутация: 183


По умолчанию

Цитата:
Сообщение от CleanLegend  

Пример для тестирования:

C++:





Код:
void
DrawRect
(
LPDIRECT3DDEVICE9 m_pDevice
,
int
X
,
int
Y
,
int
L
,
int
H
,
D3DCOLOR color
)
{
D3DRECT rect
=
{
X
,
Y
,
X
+
L
,
Y
+
H
}
;
m_pDevice
->
Clear
(
1
,
&
rect
,
D3DCLEAR_TARGET
,
color
,
0
,
0
)
;
}
HRESULT WINAPI
myEndScene
(
IDirect3DDevice9
*
m_pDevice
)
{
DrawRect
(
m_pDevice
,
250
,
250
,
10
,
10
,
0xFFFF0000
)
;
return
oEndScene
(
m_pDevice
)
;
}


Получаем:


Спасибо, работает.



Но пару вопросов, @CleanLegend.

1) Нет полупрозрачности. Использую

C++:





Код:
m_pDevice
->
Clear


и цвет в формате ARGB. Такое впечатление, что там формат просто RGB, потому что альфа канал вообще ни на что не влияет.

2) Не могу понять как рисовать что-то кроме квадратиков.

Хотя бы примитивный кружочек, линию нужной толщины. Но ладно, это я еще кое-как смогу с помощью квадратиков нарисовать...

А как насчёт текста?

И да, я знаю про возможность добавить имгуи, но пока что такой необходимости нет, поэтому просто помоги как писать текст.

И еще, не по теме, но всё же - как включить мышку?
 
Ответить с цитированием

  #2  
Старый 27.02.2024, 01:38
Smeruxa
Познавший АНТИЧАТ
Регистрация: 27.11.2020
Сообщений: 1,431
С нами: 2874035

Репутация: 183


По умолчанию

2) chatgpt

C++:





Код:
#include 
void
DrawCircle
(
LPDIRECT3DDEVICE9 m_pDevice
,
int
X
,
int
Y
,
int
radius
,
D3DCOLOR color
)
{
const
int
numSegments
=
32
;
// You can adjust this for smoother or more segmented circles
const
float
angleIncrement
=
2.0f
*
D3DX_PI
/
numSegments
;
std
::
vector

rects
;
for
(
int
i
=
0
;
i

(
radius
*
std
::
cos
(
angle
)
)
;
float
y1
=
Y
+
static_cast

(
radius
*
std
::
sin
(
angle
)
)
;
float
x2
=
X
+
static_cast

(
radius
*
std
::
cos
(
angle
+
angleIncrement
)
)
;
float
y2
=
Y
+
static_cast

(
radius
*
std
::
sin
(
angle
+
angleIncrement
)
)
;
D3DRECT rect
=
{
static_cast

(
x1
)
,
static_cast

(
y1
)
,
static_cast

(
x2
)
,
static_cast

(
y2
)
}
;
rects
.
push_back
(
rect
)
;
}
m_pDevice
->
Clear
(
rects
.
size
(
)
,
rects
.
data
(
)
,
D3DCLEAR_TARGET
,
color
,
0
,
0
)
;
}
HRESULT WINAPI
myEndScene
(
IDirect3DDevice9
*
m_pDevice
)
{
// Draw a circle centered at (250, 250) with a radius of 10 and red color
DrawCircle
(
m_pDevice
,
250
,
250
,
10
,
0xFFFF0000
)
;
return
oEndScene
(
m_pDevice
)
;
}
 
Ответить с цитированием

  #3  
Старый 27.02.2024, 20:15
Vintik
Познавший АНТИЧАТ
Регистрация: 18.08.2017
Сообщений: 1,568
С нами: 4598023

Репутация: 183


По умолчанию

Цитата:
Сообщение от Smeruxa  

2) chatgpt
Цитата:
Сообщение от Vintik  

Но ладно, это я еще кое-как смогу с помощью квадратиков нарисовать...
А как насчёт текста?
 
Ответить с цитированием

  #4  
Старый 27.02.2024, 20:46
Smeruxa
Познавший АНТИЧАТ
Регистрация: 27.11.2020
Сообщений: 1,431
С нами: 2874035

Репутация: 183


По умолчанию

hola vpn + chat gpt (40 рублей аккаунт стоит личный и меньше) =

C++:





Код:
#include 
IDWriteFactory
*
dwriteFactory
;
IDWriteTextFormat
*
textFormat
;
// Инициализация DirectWrite
HRESULT
InitDirectWrite
(
)
{
if
(
FAILED
(
DWriteCreateFactory
(
DWRITE_FACTORY_TYPE_SHARED
,
__uuidof
(
IDWriteFactory
)
,
reinterpret_cast

(
&
dwriteFactory
)
)
)
)
{
return
E_FAIL
;
}
if
(
FAILED
(
dwriteFactory
->
CreateTextFormat
(
L
"Arial"
,
nullptr
,
DWRITE_FONT_WEIGHT_NORMAL
,
DWRITE_FONT_STYLE_NORMAL
,
DWRITE_FONT_STRETCH_NORMAL
,
12.0f
,
L
"en-US"
,
&
textFormat
)
)
)
{
return
E_FAIL
;
}
return
S_OK
;
}
// Функция отрисовки текста
void
DrawText
(
IDirect3DDevice9
*
m_pDevice
,
const
wchar_t
*
text
,
int
x
,
int
y
,
D3DCOLOR color
)
{
textFormat
->
SetTextAlignment
(
DWRITE_TEXT_ALIGNMENT_LEADING
)
;
textFormat
->
SetParagraphAlignment
(
DWRITE_PARAGRAPH_ALIGNMENT_NEAR
)
;
RECT rect
=
{
x
,
y
,
0
,
0
}
;
textFormat
->
SetTextAlignment
(
DWRITE_TEXT_ALIGNMENT_LEADING
)
;
m_pDevice
->
BeginScene
(
)
;
// Установка параметров рендеринга текста (если необходимо)
// ...
// Отрисовка текста
dwriteFactory
->
CreateTextLayout
(
text
,
wcslen
(
text
)
,
textFormat
,
200.0f
,
50.0f
,
nullptr
,
nullptr
,
nullptr
)
;
m_pDevice
->
EndScene
(
)
;
}


C++:





Код:
//Затем в функции myEndScene вы можете вызвать DrawText так:
HRESULT WINAPI
myEndScene
(
IDirect3DDevice9
*
m_pDevice
)
{
DrawText
(
m_pDevice
,
L
"Hello, DirectX!"
,
100
,
100
,
D3DCOLOR_ARGB
(
255
,
255
,
255
,
255
)
)
;
return
oEndScene
(
m_pDevice
)
;
}
//Этот код предполагает, что InitDirectWrite уже был вызван ранее для инициализации DirectWrite.
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.