|
23.07.2011, 19:04
|
#1
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
На весь экран - пропорции
Если сделать так:
То вся картинка растягивается на весь экран, и, если монитор 1366x768, все получается сплющенным. Я бы хотел сделать так, чтоб если монитор широкоформатный, то по краям появлялись черные полоски, если наоборот, то полоски сверху, или вообще не появляются если пропорции монитора соответствуют 1024x768(например 1280×1024), в общем как у плееров реализовано. Кто нибудь знает как это сделать? Заранее благодарен...
|
(Offline)
|
|
23.07.2011, 19:41
|
#2
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Ответ: На весь экран - пропорции
|
(Offline)
|
|
23.07.2011, 20:36
|
#3
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: На весь экран - пропорции
Да. Вопрос аналогичный. Однако вопрос остался открытым.
|
(Offline)
|
|
24.07.2011, 00:16
|
#4
|
Дэвелопер
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений (для 1,460 пользователей)
|
Ответ: На весь экран - пропорции
Сообщение от xmarat
Я бы хотел сделать так, чтоб если монитор широкоформатный, то по краям появлялись черные полоски, если наоборот, то полоски сверху, или вообще не появляются если пропорции монитора соответствуют 1024x768(например 1280×1024)
|
CameraViewport camera,x,y,width,height
Параметры
camera - указатель камеры
x - координата x верхнего левого угла окна ( области просмотра)
y - координата y верхнего левого угла окна
width - ширина окна
height - высота окна Описание
Устанавливает позицию области просмотра камеры и ее размер.
Область просмотра камеры - 2D-область экрана, в которой отображаются рассматриваемые камерой объекты.
Установки области просмотра камеры позволяют Вам получать эффекты нескольких окон с разным видом и зеркал.
найдено тут: help.boolean.name в разделе 3d
|
(Offline)
|
|
24.07.2011, 00:18
|
#5
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,360
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: На весь экран - пропорции
раздел BlitzMax!
юзать надо просто SetViewport
Формулу расчёта бери из данной ранее ссылки.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
24.07.2011, 00:29
|
#6
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: На весь экран - пропорции
А как узнать какое разрешение у монитора?
|
(Offline)
|
|
24.07.2011, 01:08
|
#7
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,360
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: На весь экран - пропорции
Extern "Win32" Function GetSystemMetrics:Int(Axis:Int) EndExtern Local DesktopWidth:Int = GetSystemMetrics(0) Local DesktopHeight:Int = GetSystemMetrics(1) Graphics(DesktopWidth,DesktopHeight)
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
24.07.2011, 01:21
|
#8
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: На весь экран - пропорции
Эмм... А нет другого способа определить, а то я на Linux'е. Blitzmax не захотел это компилировать...
|
(Offline)
|
|
24.07.2011, 01:35
|
#9
|
Дэвелопер
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений (для 1,460 пользователей)
|
Ответ: На весь экран - пропорции
на линухе кури мануал про xlib
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.07.2011, 05:05
|
#10
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,360
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: На весь экран - пропорции
Сообщение от ffinder
на линухе кури мануал про xlib
|
Опередил
Сообщение от xmarat
Эмм... А нет другого способа определить, а то я на Linux'е. Blitzmax не захотел это компилировать...
|
SuperStrict Import "-lXrandr" Import "screen.cpp" Extern Function GetScreenSize:Int(width:Int Var,height:Int Var) EndExtern Local desktopWidth:Int Local desktopHeight:Int Local error:Int = GetScreenSize(width, height)
И собственно сишный сорс:
screen.cpp
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<X11/Xlib.h> #include<X11/extensions/Xrandr.h> extern "C" int GetScreenSize(int&,int&); // Makes the function visable to other files int GetScreenSize(int& width, int& height) { int num_sizes; Rotation original_rotation; Display *dpy = XOpenDisplay(NULL); Window root = RootWindow(dpy, 0); XRRScreenSize *xrrs = XRRSizes(dpy, 0, &num_sizes); // // GET CURRENT RESOLUTION AND FREQUENCY // XRRScreenConfiguration *conf = XRRGetScreenInfo(dpy, root); short original_rate = XRRConfigCurrentRate(conf); SizeID original_size_id = XRRConfigCurrentConfiguration(conf, &original_rotation); width = xrrs[original_size_id].width; height = xrrs[original_size_id].height; XCloseDisplay(dpy); return 0; }
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.07.2011, 16:17
|
#11
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: На весь экран - пропорции
Спасибо огромное Randomize!!! Это то что нужно. Вопрос на будущее: при компиляции в windows, с этим(код ниже) будет аналогично?
Extern "Win32" Function GetSystemMetrics:Int(Axis:Int) EndExtern Local DesktopWidth:Int = GetSystemMetrics(0) Local DesktopHeight:Int = GetSystemMetrics(1)
Graphics(DesktopWidth,DesktopHeight)
|
(Offline)
|
|
24.07.2011, 20:09
|
#12
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,360
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: На весь экран - пропорции
Есть директивы:
?Win32 Код для Windows ?MacOs Код для макоси ?Linux Код для линукса ?
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.07.2011, 11:09
|
#13
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: На весь экран - пропорции
Не знал что так можно. Полезная вещь, буду знать. А как можно узнать размер дисплея в MacOS?
__________________
OS: Ubuntu Linux 11.04
CPU: Intel® Core™ 2 Quad Q9000 (2.0GHz, 1066MHz, 6Mb)
RAM: DDR2 SODIMM 4096 Мб
Video: NVIDIA® GeForce® GT240M 1024 Мб
|
(Offline)
|
|
25.07.2011, 12:00
|
#14
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: На весь экран - пропорции
Для макос должен пример для линукса подойти.
__________________
|
(Offline)
|
|
25.07.2011, 12:01
|
#15
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,360
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: На весь экран - пропорции
Сообщение от xmarat
Не знал что так можно. Полезная вещь, буду знать. А как можно узнать размер дисплея в MacOS?
|
?Win32 Import pub.win32 Private Extern Function ReleaseDC(hwnd:Int, hdc:Int)"Win32" End Extern Public ?MacOS Import "macscreen.c" Private Extern Function CGDisplayCurrentMode:Byte Ptr(displayID:Byte Ptr)"MacOS" Function CGGetActiveDisplayList:Byte Ptr(kMaxDisplays:Int, display:Byte Ptr, numDisplays:Int Var)"MacOS" Function MACOS_GetWidth:Int(mode:Byte Ptr)"C" Function MACOS_GetHeight:Int(mode:Byte Ptr)"C" Function MACOS_GetBPP:Int(mode:Byte Ptr)"C" Function MACOS_GetHertz:Int(mode:Byte Ptr)"C" End Extern Public ?Linux Import brl.graphics ? Function GetDesktopMode:Int (width:Int Var, height:Int Var, depth:Int Var, hertz:Int Var) ?win32 Local hwnd:Int = GetDesktopWindow() Local hdc:Int = GetDC(hwnd) If hdc = Null Then Return -1 width = GetDeviceCaps(hdc, HORZRES) height = GetDeviceCaps(hdc, VERTRES) depth = GetDeviceCaps(hdc, BITSPIXEL) hertz = GetDeviceCaps(hdc, VREFRESH) ReleaseDC(hwnd,hdc) ?MacOS Local display:Byte Ptr[] = New Byte Ptr[1] Local iMode:Byte Ptr = Null Local iCount:Int CGGetActiveDisplayList 1, display, iCount iMode = CGDisplayCurrentMode(display[0]) width = MACOS_GetWidth(iMode) height = MACOS_GetHeight(iMode) depth = MACOS_GetBPP(iMode) hertz = MACOS_GetHertz(iMode) ?Linux CountGraphicsModes() GetGraphicsMode (0,width,height,depth,hertz) ? End Function ' Получать так : ' Local desktopWidth:Int, desktopHeight:Int, desktopDepth:Int, desktopHertz:Int GetDesktopMode(desktopWidth, desktopHeight, desktopDepth, desktopHertz) Graphics(desktopWidth, desktopHeight, desktopDepth, desktopHertz)
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
Последний раз редактировалось Randomize, 25.07.2011 в 15:16.
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:11.
|