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

  #1  
Старый 10.04.2015, 19:49
Uztor
Познающий
Регистрация: 09.07.2014
Сообщений: 42
С нами: 6233649

Репутация: 0
По умолчанию

Hello, how can I fix the resolution problem?

Code:

Код:





Код:
pFont->Print("Hello, this is a test!", D3DCOLOR_ARGB(255, 255, 255, 0), 500, 500, false);


Screenshots:

1024x768:



1920x1080:

 
Ответить с цитированием

  #2  
Старый 10.04.2015, 20:28
SR_team
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами: 6603505

Репутация: 183


По умолчанию

int Resolution[2];

SF->getGame()->getScreenResolution(&Resolution[0], &Resolution[1]);

Font->Print("Hello, this is a test!", D3DCOLOR_ARGB(255, 255, 255, 0), Resolution[0] / 2, Resolution[1] / 2, false);
 
Ответить с цитированием

  #3  
Старый 10.04.2015, 20:38
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

in the center

char buf[32] = "Hello, this is a test!";

Font->Print(buf, D3DCOLOR_ARGB(255, 255, 255, 0), Resolution[0] / 2 - Font->DrawLenght(buf, false) / 2, Resolution[1] / 2 - Font->DrawHeight()/2, false);
 
Ответить с цитированием

  #4  
Старый 10.04.2015, 20:39
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

But u can use Game coordinates and then convert to Window coords/
 
Ответить с цитированием

  #5  
Старый 10.04.2015, 20:52
Uztor
Познающий
Регистрация: 09.07.2014
Сообщений: 42
С нами: 6233649

Репутация: 0
По умолчанию

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

But u can use Game coordinates and then convert to Window coords/
What the game coordinates?
 
Ответить с цитированием

  #6  
Старый 10.04.2015, 21:05
Uztor
Познающий
Регистрация: 09.07.2014
Сообщений: 42
С нами: 6233649

Репутация: 0
По умолчанию

My problem is:

I draw a box (my "coordinates")

Код:





Код:
SF->getRender()->DrawBorderedBox(1300, 700, 600, 300, D3DCOLOR_ARGB(255, 0, 0, 0), 3, D3DCOLOR_ARGB(50, 255, 255, 255));


But... how can convert for every screen resolution?

@SR_team

@Dark_Knight

/edit:

My solution.. (not the best )

Код:





Код:
int Resolution[2];
SF->getGame()->getScreenResolution(&Resolution[0], &Resolution[1]);
X = Resolution[0] / 2;
Y = Resolution[1] / 2;
SF->getRender()->DrawBorderedBox(X + X - 610, Y + Y - 310, 600, 300, D3DCOLOR_ARGB(255, 0, 0, 0), 3, D3DCOLOR_ARGB(50, 255, 255, 255));
 
Ответить с цитированием

  #7  
Старый 10.04.2015, 22:19
spiceman
Участник форума
Регистрация: 18.03.2013
Сообщений: 104
С нами: 6921972

Репутация: 0
По умолчанию

Код:





[CODE]
int resolution[2];
SF->getGame()->getScreenResolution(&resolution[0], &resolution[1]);
kX = resolution[0] / 640;
kY = resolution[1] / 448;
SF->getRender()->DrawBorderedBox(pos1 * kX, pos2 * kY, size1 * kX, size2 * kY, D3DCOLOR_ARGB(255, 0, 0, 0), 3, D3DCOLOR_ARGB(50, 255, 255, 255));
// 0

 
Ответить с цитированием

  #8  
Старый 10.04.2015, 22:48
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

[QUOTE="spiceman"]

Код:





[CODE]
int resolution[2];
SF->getGame()->getScreenResolution(&resolution[0], &resolution[1]);
kX = resolution[0] / 640;
kY = resolution[1] / 448;
SF->getRender()->DrawBorderedBox(pos1 * kX, pos2 * kY, size1 * kX, size2 * kY, D3DCOLOR_ARGB(255, 0, 0, 0), 3, D3DCOLOR_ARGB(50, 255, 255, 255));
// 0
 
Ответить с цитированием

  #9  
Старый 11.04.2015, 00:10
spiceman
Участник форума
Регистрация: 18.03.2013
Сообщений: 104
С нами: 6921972

Репутация: 0
По умолчанию

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

Kidding?
что не так. находим коэффициент подобия, используя его, мы можем преобразовывать игровые координаты в координаты экрана.

ведь k = resolution / game_resolution = point / game_point

допустим, мое разрешение экрана 1440x900, мне нужно нарисовать в центре точку.

середина по горизонтали по игровым координатам = 320px

k = 1440 / 640 = 2.25

x = k * 320 = 720 ( 1440 / 2 = 720 )

1440 / 640 = 720 / 320 = 2.25
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.