Jump to content

Область видимости dxDrawText


Recommended Posts

Привет всем, делаю scroll dx текста по колесу мыши. Возможно ли сделать область видимости текста ( dxDrawText ( string text, float left, float top [, float right=left, float bottom=top, ... ) только определённый участок на экране. Схематично на картинке: 1111.jpg

Белая область - область видимости, всё что выходит за неё должно обрезаться.

Но на деле по Y получается только либо с самого верха до центра, либо с самого низа до центра.

111.jpg

На данный момент код таков, текст перемещается вверх как надо, но его надо обрезать.

local name, t_Header, length1, x1, length2, x2, fileContent 
local scroll = 0; 
  
function welcomeGui() 
   name = getPlayerNameWithOutCode(getLocalPlayer()) 
   t_Header = name..", welcome to [sV] server" 
   length1 = dxGetTextWidth(t_Header, 0.9, DxArial14) 
   x1 = (w_window-length1)/2  
  
   local newFile = fileOpen ( "menu/rules.txt", true ) 
   fileContent = fileRead ( newFile, fileGetSize ( newFile ) ) 
   length2 = dxGetTextWidth(fileContent, 0.9, DxArial11) 
   x2 = (w_window-length2)/2  
   addEventHandler( "onClientRender", root, dx_welcomeGui) 
end 
  
local height_text = 36*20 ---1-строка-20-pix 
local y_scroll_max = h_window-70 
local y_scroll_unit = math.floor(height_text/y_scroll_max) 
local speed = 8 
  
function dx_welcomeGui() 
   dxDrawText ( "#00FF00"..t_Header, x_window+x1, y_window+20, x1_window, y1_window, tocolor ( 255, 255, 255, 255 ), 0.9, DxArial14, "left", "top", false, false, false, true ) 
   dxDrawText ( fileContent, x_window+x2, y_window+40-scroll, x_window+w_window, y_window+h_window-20, tocolor ( 255, 255, 255, 255 ), 0.9, DxArial11, "left", "top", true, false, false, false ) 
   dxDrawRectangle ( x_window+x_window-10, y_window+20+scroll, 10, 30, tocolor( 255, 255, 255, 255 ) ) 
end 
  
function scroll_up() 
   if ( scroll < y_scroll_max ) then 
      scroll = scroll + y_scroll_unit*speed; 
   end 
end 
bindKey("mouse_wheel_down", "down", scroll_up) 
  
function scroll_down() 
   if ( scroll > 0 ) then 
      scroll = scroll - y_scroll_unit*speed 
   end 
end 
bindKey("mouse_wheel_up", "down", scroll_down) 

Link to comment
Да я видел это, не понял ничего что и как, не объясните ли?

С помощью RenderTarget ты можешь создать текстуру и рисовать в неё, а потом рисовать эту текстуру с помощью dxDrawImage.

В этом примере это и делается https://wiki.multitheftauto.com/wiki/Dx ... nderTarget

Если оставить текущую реализацию, то как будет, если поставить clip и wordBreak( первые два булевых аргумента у dxDrawText, отвечают за обрезку ) на true.

Это касается самого текста, если он к примеру выходит за пределы своих границ. Тут как я понимаю, вопрос стоит о реализации что-то вроде стандартного чата, только со своими плюшками.

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