Jump to content

dxDrawText - جميع مقاسات الشاشة


Recommended Posts

سلام عليكم

انا حاطط هادا الكود لتكست dxDrawText

ولكن المشكلة يكون ظابط عندي

ولكن عند خويي تجيله باماكن تانية علي الشاشة

وش الحل عشان اخلي الكلمة تيجي لكل احداثيات الشاشة في نفس المكان

_dxDrawRectangle = dxDrawRectangle
_dxDrawText = dxDrawText
_dxDrawLine = dxDrawLine
_dxDrawImage = dxDrawImage
sWidth, sHeight = guiGetScreenSize()
local resolutionX = 1366
local resolutionY = 768

	function dxDrawText( text,posX,posY,right,bottom,color,scale,mixed_font,alignX,alignY,clip,wordBreak,postGUI,kk,gg )
	return _dxDrawText(tostring( text ), ( posX/resolutionX )*sWidth, ( posY/resolutionY )*sHeight, ( right/resolutionX )*sWidth, ( bottom/resolutionY)*sHeight, color, ( sWidth/resolutionX )*scale, mixed_font, alignX, alignY, clip, wordBreak, postGUI, kk, gg)
end
function dxDrawRectangle( posX, posY, width, height,color,postGUI )
    return _dxDrawRectangle(( posX/resolutionX )*sWidth, ( posY/resolutionY )*sHeight, ( width/resolutionX )*sWidth, ( height/resolutionY )*sHeight, color, postGUI)
end
function dxDrawImage( posX, posY, width, height, filename, rotation, r2, r3, color,postGUI )
    return _dxDrawImage(( posX/resolutionX )*sWidth,( posY/resolutionY )*sHeight,( width/resolutionX )*sWidth,( height/resolutionY )*sHeight, filename, rotation, r2, r3, color, postGUI)
end
function dxDrawLine( posX, posY, width, height,color, size, postGUI )
    return _dxDrawLine(( posX/resolutionX )*sWidth, ( posY/resolutionY )*sHeight, ( width/resolutionX )*sWidth, ( height/resolutionY )*sHeight, color, size, postGUI)
end

 

Link to comment

انا عن نفسي استعمل الطريقة الاتية

local x, y = guiGetScreenSize ( )
local sx, sy = 1600, 900 -- مقاسات شاشتك

-- مثال

dxDrawText("TEST", 100, 200, 300, 400) -- الكود ذا على شاشتي فقط

dxDrawText("TEST", x * (100/sx), y * (200/sy), x * (300/sx), y * (400/sy)) -- لجميع الشاشات

وصلت الفكرة؟

Edited by HassoN
Link to comment
15 minutes ago, HassoN said:

انا عن نفسي استعمل الطريقة الاتية


local x, y = guiGetScreenSize ( )
local sx, sy = 1600, 900 -- مقاسات شاشتك

-- مثال

dxDrawText("TEST", 100, 200, 300, 400) -- الكود ذا على شاشتي فقط

dxDrawText("TEST", x * (100/sx), y * (200/sy), x * (300/sx), y * (400/sy)) -- لجميع الشاشات

وصلت الفكرة؟

طيب هي نفس الكود حقي تقريبا بس ليه حقي ما يشتغل

Link to comment
1 minute ago, HassoN said:

ماعندي اي فكرة ... ممكن حاط مقاسات شاشتك غلط...؟

 

حاطها صح 

        dxDrawText(string.gsub(text, "#%x%x%x%x%x%x", ""), 172 - 1, 171 - 1, 1195 - 1, 598 - 1, tocolor(0, 0, 0, 255), 1.00, dxfont0_font, "center", "bottom", false, false, false, true, false)
        dxDrawText(string.gsub(text, "#%x%x%x%x%x%x", ""), 172 + 1, 171 - 1, 1195 + 1, 598 - 1, tocolor(0, 0, 0, 255), 1.00, dxfont0_font, "center", "bottom", false, false, false, true, false)
        dxDrawText(string.gsub(text, "#%x%x%x%x%x%x", ""), 172 - 1, 171 + 1, 1195 - 1, 598 + 1, tocolor(0, 0, 0, 255), 1.00, dxfont0_font, "center", "bottom", false, false, false, true, false)
        dxDrawText(string.gsub(text, "#%x%x%x%x%x%x", ""), 172 + 1, 171 + 1, 1195 + 1, 598 + 1, tocolor(0, 0, 0, 255), 1.00, dxfont0_font, "center", "bottom", false, false, false, true, false)
        dxDrawText(""..text.."", (screenW - 1023) / 2, (screenH - 427) / 2, ((screenW - 1023) / 2) + 1023, ( (screenH - 427) / 2) + 427, tocolor(255, 255, 255, 255), 1.00, dxfont0_font, "center", "bottom", false, false, false, true, false) end

 

Link to comment

المشكلة دي لما كانت بتواجهني كنت بستخدم طريقتك برضو بس كنت بخلي مقياس الشاشه صغير وقت التصميم

800 x 600
 

جرب عيد التصميم وشاشة اللعبه عندك كده
 

وشوف

Link to comment
16 hours ago, #Soking said:

المشكلة دي لما كانت بتواجهني كنت بستخدم طريقتك برضو بس كنت بخلي مقياس الشاشه صغير وقت التصميم

800 x 600
 

جرب عيد التصميم وشاشة اللعبه عندك كده
 

وشوف

 

On 18/07/2019 at 20:41, Mr.Mostafa said:
  • local resolutionX = 1366
  • local resolutionY = 768

واخلي دول 800 x 600 ?

On 19/07/2019 at 18:18, NX_CI said:

وش جايك في الديبق ؟

ما يجي شي , الكلمة تيجي علي الشاشة حقتي مظبوطة وعلي شاشة خويي خربانة احداثيات مختلفة

Link to comment

طريقة حسابك خاطئة

local screenWidth, screenHeight = guiGetScreenSize ( )
local resX, resY =  (screenWidth/1366), (screenHeight/768)
local _dxDrawRectangle = dxDrawRectangle

function dxDrawRectangle ( x, y, width, height, color, postGUI )
    _dxDrawRectangle ( resX * x, resY * y, resX * width, resY * height, color, postGUI )
end

 

Link to comment
3 hours ago, N3xT said:

طريقة حسابك خاطئة


local screenWidth, screenHeight = guiGetScreenSize ( )
local resX, resY =  (screenWidth/1366), (screenHeight/768)
local _dxDrawRectangle = dxDrawRectangle

function dxDrawRectangle ( x, y, width, height, color, postGUI )
    _dxDrawRectangle ( resX * x, resY * y, resX * width, resY * height, color, postGUI )
end

 

خطأ فادح , إذا قسمت عرض شاشة المصمم على شاشة اللاعب تساوي كارثة

الطريقة الصحيحه كالتالي

local screenWidth, screenHeight = guiGetScreenSize();
local desW,desH = 1366,768;

dxDrawRectangle( 300/desW*screenWidth, 200/desH*screenHeight, 50/desW*screenWidth, 50/desH*screenHeight );

-- وهكذا مع :
dxDrawText
dxDrawImage ...etc

 

Link to comment
13 hours ago, NX_CI said:

خطأ فادح , إذا قسمت عرض شاشة المصمم على شاشة اللاعب تساوي كارثة

الطريقة الصحيحه كالتالي


local screenWidth, screenHeight = guiGetScreenSize();
local desW,desH = 1366,768;

dxDrawRectangle( 300/desW*screenWidth, 200/desH*screenHeight, 50/desW*screenWidth, 50/desH*screenHeight );

-- وهكذا مع :
dxDrawText
dxDrawImage ...etc

 

على اي اساس حكمت ان كودي خطأ؟

 

17 hours ago, Mr.Mostafa said:

اسويها علي الباقي

سواء text + image ?

يب

Edited by N3xT
Link to comment
23 minutes ago, N3xT said:

على اي اساس حكمت ان كودي خطأ؟

 

يب

على اساس المنطق

افرض اني بسويه على طريقتك

مقاس شاشتي

1920x1080

مقاسات شاشة مصطفى

1366x768

ولتكن مقاسات المستطيل على هذا النحو

x=683,y=200,width=64,height=64

طبعاً

x = نصف شاشة مصطفى

 

هل تعتقد ان

1366/1920 * x = نفس المقاس في شاشتي وشاشة مصطفى

؟؟

1366 / 1920 = 0.711

 يكون في نصف شاشتي ايضاً xمن البديهي اني ابغى الـ

0.711 * 683 = 485.6

x = 485.6 إذن

1920 و أنا متأكد تماماً ان نصف

485.6 لا يساوي

 

 

لكن لو بالطريقه اللي حطيتها انا

x/1366 = 0.5

0.5 * 1920 = 960

x = 960

هذي جات بالنص الآن

#EDIT

عفواً 

تأكدت من كودك و حصلتك قاسم شاشة اللاعب على شاشة المصمم وأنا احسبه العكس

أعتذر

Edited by NX_CI
Link to comment
On 21/07/2019 at 03:23, N3xT said:

طريقة حسابك خاطئة


local screenWidth, screenHeight = guiGetScreenSize ( )
local resX, resY =  (screenWidth/1366), (screenHeight/768)
local _dxDrawRectangle = dxDrawRectangle

function dxDrawRectangle ( x, y, width, height, color, postGUI )
    _dxDrawRectangle ( resX * x, resY * y, resX * width, resY * height, color, postGUI )
end

 

حطيته صار يجي تحت مب بنفس المكان

Link to comment
1 hour ago, Mr.Mostafa said:

حطيته صار يجي تحت مب بنفس المكان

طبعاً بيجي خطاء لان الكود اساساً خطاء ، الطريقة الي عطيتها لك والي انت مستعملها صح ، صراحة ما ادري ايش الي مسبب لك المشكلة لكن اقدر اكد لك ان الطريقة تمام

Link to comment
3 hours ago, Mr.Mostafa said:

حطيته صار يجي تحت مب بنفس المكان

غالباً المشكلة من نفس استعمالك للكود, حط الاحداثيات الاساسية فقط بكودك ما يحتاج اي عمليات حسابية

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...