Jump to content

مشكلة في مقاسات الشاشة


SycroX

Recommended Posts

شباب معلش علي الأزعاج بس انا عندي مشكلة كبيرة بجد

مقاسات الشاشة عندي ما تظبت للكل

اكتر من مود و اكتر من لوحة او اكتر من شي دي اكس

اسويهم و اخليهم لكل الشاشات ما تظبت

جربت

Relative في الجاي اديتور ما ظبتت

جربت

x, y = guiGetScreenSize() 
rx, ry = (x/1280), (y/800) 
  

بردو مو نافعة جربت

جربت كل الطرق ما في ولا طريقة نفعت مقاس شاشتي

1280 × 800 × 32

حد عندو طريقة اظبت بها المقاسات لانها اكبر مشكلة عندي هي

Link to comment
سويت لك فنكشن يسهل عليك :

getPosition = function ( x, y, sx, sy ) 
    if type( x ) =='number' and type( y ) == 'number' and type ( sx ) == 'number' and type ( sy ) == 'number' then 
        local sc = { guiGetScreenSize ( ) } 
            local screenX, screenY = sc[1] * ( x / sx ), sc[2] * ( y / sy ) 
                return  screenX, screenY 
    end 
        return false 
end 

getPosition ( x, y, sx, sy ) 
-- x احداثيات 
-- y احداثيات 
-- sx مقاس الشاشه 
-- sy مقاس الشاشه 

مثال :

local x,y = getPosition ( 5, 5, 1366, 768 ) 
window = guiCreateWindow ( x, y, 50, 100, 'Test', false ) 
Link to comment

آلسلام عليكم

guiSetPos

الفنكشن هو عبارة عن انه يضبط لوحة ألــ GUI على جميع الشاشت

طبعا واضح من الاسم فقط للــ GUI

Syntax:

bool guiSetPos ( GUI theGUI, float x, float y, bool Relative )

Source Code :

function guiSetPos ( theGUI, x, y, Relative )
    if ( ( isElement ( theGUI ) ) and ( getElementType ( theGUI ):find( "gui-" ) ) ) then
        if ( ( theGUI ) and ( x ) and ( y ) ) then
    local px, py = guiGetScreenSize ( );
        local hx, hy = guiGetPosition ( theGUI, Relative );
    guiSetPosition ( theGUI, hx * px / x, hy * py / y, Relative );
        return true
    else
        return false
    end
else
    return false
   end
end

طريقة الاستخدام :

طبعا واضح من الساينتكس

bool guiSetPos ( GUI theGUI الزر او الوحة او اي شي, float x احداثيات شاشتك x, float y احداثيات شاشتك y, bool Relative طبعا تحصل هذا من عبر الوحة او الـgui )

كيف تحصل ال Relative ?

GUIEditor.window[1] = guiCreateWindow(396, 187, 377, 256, "Test", false << Relative )

Example :

  
GUIEditor = { 
    button = {}, 
    window = {} 
} 
addEventHandler("onClientResourceStart", resourceRoot, 
    function() 
        GUIEditor.window[1] = guiCreateWindow(396, 187, 377, 256, "Test", false) 
        guiWindowSetMovable(GUIEditor.window[1], false) 
        guiWindowSetSizable(GUIEditor.window[1], false) 
        guiSetAlpha(GUIEditor.window[1], 1.00) 
        guiSetPos ( GUIEditor.window[1], 1366, 768, false ) 
        guiSetVisible ( GUIEditor.window[1], false ) 
        GUIEditor.button[1] = guiCreateButton(142, 73, 168, 41, "hi", false, GUIEditor.window[1]) 
        guiSetProperty(GUIEditor.button[1], "NormalTextColour", "FFAAAAAA")     
    end 
) 
  
bindKey ( "F7", "down", function (  ) 
guiSetVisible ( GUIEditor.window[1], not guiGetVisible ( GUIEditor.window[1] ) ) 
showCursor ( guiGetVisible ( GUIEditor.window[1] ) ) 
end ) 
  
function guiSetPos ( theGUI, x, y, Relative ) 
    if ( ( isElement ( theGUI ) ) and ( getElementType ( theGUI ):find( "gui-" ) ) ) then 
        if ( ( theGUI ) and ( x ) and ( y ) ) then 
    local px, py = guiGetScreenSize ( ); 
        local hx, hy = guiGetPosition ( theGUI, Relative ); 
    guiSetPosition ( theGUI, hx * px / x, hy * py / y, Relative ); 
        return true 
    else 
        return false 
    end 
else 
    return false 
   end 
end 

Author : ~xiRoc[K]#^

Wiki Page : ماعرف كيف احطه في الويكي :!:

طبعا ماحصلت اسم للـوضيفة خليته كذا :lol:

اي خطأ قول ليي :P

والسلام عليكم :mrgreen:

Link to comment

^ يمكن يبيها بالزاويه او شي زي كذا ..

[6ArH]#~Ecoo~ المهم شوف رد الاخ

^ ولا يهونون الباقين ..

وشوف ذا ردي ف موضوع قديم :

شوف جرب هالطريقه :

شوف حبيبي هذي طريقه سهله جدا ,

local x, y = guiGetScreenSize ( ) -- تجيب مقاسات الشاشه 
local sx, sy = 1366, 768 -- تحط مقاس الشاشه حقك 
local resX, resY = 100, 200 -- تحط الاحداثيات الطول والعرض 
local screenX, screenY = x * ( resX / sx ), y * ( resY / sy ) -- عمليات ضرب وقسمه عشان تصير نفس المقاس لكل الشاشات 

: الي عليك انك تبدل التالي

  • السطر الثاني , تحط مقاس الشاشه حقك , طبعا ذا مثال على مقاس شاشتي
  • السطر الثالث , تحط الاحداثيات للطول والعرض

راح تحتاج تخلي الخط لكل الشاشات , الي عليك تسويه كذا, dxDrawText لو استخدمت الوظيفه

local x, y = guiGetScreenSize ( ) 
local sx, sy = 1366, 768 
local resX, resY = 300, 400 
local screenX, screenY = x * ( resX / sx ), y * ( resY / sy ) 
  
x * ( size / sx ) -- نضرب مقاسات الشاشه في حاصل قسمه الحجم على مقاس الشاشه 

  • بالحجم المطلوب size استبدل

وللمعلوميه اذا استخدمت gui الطريقه تنفع مع الدي اكس او الـ

dxDrawText تحتاج الكود اللي فوق عشان حجم الخط .

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...