|
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,361
Написано 2,473 полезных сообщений (для 6,857 пользователей)
|
Ответ: На весь экран - пропорции
раздел BlitzMax!
юзать надо просто SetViewport
Формулу расчёта бери из данной ранее ссылки.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 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,361
Написано 2,473 полезных сообщений (для 6,857 пользователей)
|
Ответ: На весь экран - пропорции
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 4090 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,361
Написано 2,473 полезных сообщений (для 6,857 пользователей)
|
Ответ: На весь экран - пропорции
Сообщение от 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 4090 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,361
Написано 2,473 полезных сообщений (для 6,857 пользователей)
|
Ответ: На весь экран - пропорции
Есть директивы:
?Win32
Код для Windows
?MacOs
Код для макоси
?Linux
Код для линукса
?
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 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,361
Написано 2,473 полезных сообщений (для 6,857 пользователей)
|
Ответ: На весь экран - пропорции
Сообщение от 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 4090 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, время: 23:33.
|