surface

surface kütüphanesi, ekranda metin ve şekiller çizmenize olanak tanır. Genellikle HUD'lar (Heads-Up Display) ve özel GUI panelleri yapmak için kullanılır.

Metotlar

surface.CreateFont( string fontName, table fontData )
Yeni bir yazı tipi oluşturur. Anahat (outline) ayarını kullanırken yazı tipinin yanlış görüntülenmesini önlemek için `antialias`'ı false olarak ayarlayın. Bu, metnin tüm anahattı düzgün bir şekilde doldurmasını sağlayacaktır. Önce Varsayılan Yazı Tipleri Listesi'ni kontrol ettiğinizden emin olun! Bu yazı tipleri, bu fonksiyonu kullanmadan da kullanılabilir. Ayrıca bakınız: Yazı Tipi Adını Bulma. Yazı tiplerinin statik doğası gereği, yazı tipini birden fazla kez OLUŞTURMAYIN. Onları yalnızca bir kez oluşturmalısınız; betiğinizin en başında oluşturmanız önerilir. Bu fonksiyonu `GM:HUDPaint` veya başka bir hook içinde kullanmayın! Sadece gerçekten kullanacağınız yazı tiplerini tanımlayın, çünkü yazı tipleri performansı çok yorar ve çökmelere neden olabilir! Her boyut için yazı tipi oluşturmayın.
boolean surface.DisableClipping( boolean disable )
Bunu kullanmamanızı tavsiye ederiz. Gelecekteki bir güncellemede değiştirilebilir veya kaldırılabilir. `DisableClipping`'in bir takma adıdır, bu yüzden onun yerine onu kullanın. VGUI tarafından kullanılan ve çizim işlemlerini bir panelin sınırlarına kısıtlayan kırpmayı (clipping) etkinleştirir veya devre dışı bırakır. `DisableClipping` ile aynıdır. Ayrıca bakınız: `Panel:NoClipping`.
surface.DrawCircle( number originX, number originY, number radius, number r, number g, number b, number a = 255 )
Çizgilerden oluşan içi boş bir daire çizer. Dolu bir daire için `surface.DrawPoly` örneklerine bakın. Bu, 2D render bağlamı gerektiren bir render fonksiyonudur. Bu, yalnızca 2D Render Hook'larında çalışacağı anlamına gelir.
surface.DrawLine( number startX, number startY, number endX, number endY )
Bir noktadan diğerine bir çizgi çizer. Bu, 2D render bağlamı gerektiren bir render fonksiyonudur. Bu, yalnızca 2D Render Hook'larında çalışacağı anlamına gelir.
surface.DrawOutlinedRect( number x, number y, number w, number h, number thickness = 1 )
Belirtilen kenarlık genişliğine sahip içi boş bir kutu çizer. Bu, 2D render bağlamı gerektiren bir render fonksiyonudur. Bu, yalnızca 2D Render Hook'larında çalışacağı anlamına gelir.
surface.DrawPoly( table vertices )
Maksimum 4096 köşeye sahip dokulu bir poligon (aslında bir üçgen yelpazesi) çizer. Yalnızca dışbükey (convex) poligonlarla düzgün çalışır. İçbükey (concave) poligonları render etmeyi deneyebilirsiniz, ancak işlerin karışmayacağının garantisi yoktur. Çoğu `surface` kütüphanesi fonksiyonunun aksine, tam sayı olmayan koordinatlar yuvarlanmaz. Tutarlı sonuçlar elde etmek için fonksiyonu çağırmadan önce çizim rengini ve dokusunu sıfırlamanız gerekir. Aşağıdaki örneklere bakın. Bu, 2D render bağlamı gerektiren bir render fonksiyonudur. Bu, yalnızca 2D Render Hook'larında çalışacağı anlamına gelir.
surface.DrawRect( number x, number y, number width, number height )
Ekrana dolu bir dikdörtgen çizer. Bu, 2D render bağlamı gerektiren bir render fonksiyonudur. Bu, yalnızca 2D Render Hook'larında çalışacağı anlamına gelir.
surface.DrawText( string text, boolean forceAdditive = nil )
Daha önce ayarlanmış konumu, yazı tipini ve rengi kullanarak belirtilen metni ekrana çizer. Bu fonksiyon yeni satırları (newline) işlemez. Bu fonksiyon, metin konumunu çizilen metnin uzunluğu kadar kaydırır - bu, metin konumunu manuel olarak yeniden hesaplamak zorunda kalmadan metin özelliklerini (yazı tipi veya renk gibi) değiştirmek için kullanılabilir. Bu davranışın örnek kullanımı için örnek #2'ye bakın. Bu, 2D render bağlamı gerektiren bir render fonksiyonudur. Bu, yalnızca 2D Render Hook'larında çalışacağı anlamına gelir.
surface.DrawTexturedRect( number x, number y, number width, number height )
`surface.SetMaterial` ile ayarlanmış olan mevcut aktif dokuyu kullanarak, verilen konum ve boyutlarda dokulu bir dikdörtgeni ekrana çizer. Ayrıca `surface.SetDrawColor`'dan da etkilenir. Ayrıca bakınız: `render.SetMaterial` ve `render.DrawScreenQuadEx`. Ayrıca bakınız: `surface.DrawTexturedRectUV` ve `surface.DrawTexturedRectRotated`. Bu, 2D render bağlamı gerektiren bir render fonksiyonudur. Bu, yalnızca 2D Render Hook'larında çalışacağı anlamına gelir.
surface.DrawTexturedRectRotated( number x, number y, number width, number height, number rotation )
Mevcut aktif dokuyu kullanarak, verilen konum, boyutlar ve açıyla döndürülmüş dokulu bir dikdörtgeni ekrana çizer. Ayrıca bakınız: `surface.DrawTexturedRectUV` ve `surface.DrawTexturedRect`. Bu, 2D render bağlamı gerektiren bir render fonksiyonudur. Bu, yalnızca 2D Render Hook'larında çalışacağı anlamına gelir.
surface.DrawTexturedRectUV( number x, number y, number width, number height, number startU, number startV, number endU, number endV )
Tekrarlanan veya kısmi bir doku ile dokulu bir dikdörtgen çizer. u ve v, doku koordinatlarını ifade eder. (u, v) = (0, 0) sol üsttür (u, v) = (1, 0) sağ üsttür (u, v) = (1, 1) sağ alttır (u, v) = (0, 1) sol alttır Başlangıç noktası olarak (1, 0) ve bitiş noktası olarak (0, 1) kullanarak bir görüntüyü yatay olarak çevrilmiş şekilde çizebilirsiniz, aynı şey diğer yönler için de geçerlidir. 1'in üzerine çıkmak dokuyu döşeyecektir (tile). Negatif değerlere de izin verilir. İşte yardımcı bir resim: Ayrıca bakınız: `surface.DrawTexturedRect` ve `surface.DrawTexturedRectRotated`. Eğer bir .png resmi kullanıyorsanız, döşeme (tiling) kullanmayı planlıyorsanız `Material` için ikinci parametre olarak "noclamp" bayrağını sağlamanız gerekir. Eğer `surface.DrawTexturedRectUV`'nin doku koordinatlarınızı (u0, v0), (u1, v1) yanlış aldığını ve `CreateMaterial` ile oluşturulmuş bir materyal ile render yaptığınızı fark ederseniz, aşağıdaki kodla onları ayarlamayı deneyin: local du = 0. 5 / 32 -- half pixel anticorrection local dv = 0. 5 / 32 -- half pixel anticorrection local u0, v0 = (u0 - du) / (1 - 2 * du), (v0 - dv) / (1 - 2 * dv) local u1, v1 = (u1 - du) / (1 - 2 * du), (v1 - dv) / (1 - 2 * dv) Açıklama: `surface.DrawTexturedRectUV`, doku koordinatlarını yarım piksel kadar düzeltmeye çalışır (örnekleme ile ilgili bir durum) ve düzeltmeyi `IMaterial::GetMappingWidth()/GetMappingHeight()` kullanarak hesaplar. Eğer materyal bir `$basetexture` olmadan oluşturulduysa, `GetMappingWidth()/GetMappingHeight()` hata materyalinin genişliğini ve yüksekliğini (32x32) kullanır. Bu, 2D render bağlamı gerektiren bir render fonksiyonudur. Bu, yalnızca 2D Render Hook'larında çalışacağı anlamına gelir. UV ofsetleri, doğru döşeme sonuçları için (alt) piksel düzeltmesi gerektirebilir. Sorun Takipçisi: 3173
Çizim işlemlerini etkileyen mevcut alfa çarpanını döndürür. Bu, `surface.SetAlphaMultiplier` tarafından veya belirli diğer durumlarda oyun motoru tarafından ayarlanır.
Çizim işlemlerini etkileyen mevcut rengi döndürür.
number surface.GetHUDTexture( string name )
Belirtilen ada sahip bir dokunun HUD ikonu `TextureID`'sini döndürür. Muhtemelen `Material` ve `surface.SetMaterial` kullanmak isteyeceksiniz.
O anda çizilmekte olan Panel için konum ve `ScissorRect` bilgilerini alır. `PANEL:Paint` fonksiyonu içinde `surface` kütüphanesini (ve dolayısıyla `draw` kütüphanesini) kullanırken, orijin ((0,0)'ın ekrandaki konumu) panelin içeriğini çizmeyi kolaylaştırmak için otomatik olarak panelin sol üst köşesine kaydırılır. Ek olarak, `render.SetScissorRect`, çizilen tüm içeriği panelin sınırları içine kırpmak (veya "maskelemek") için kullanılır. Bu fonksiyon, `surface` kütüphanesi tarafından kullanılan mevcut panelin orijini ve `ScissorRect` hakkındaki bilgileri döndürür.
Metin çizim işlemlerini etkileyen mevcut rengi döndürür.
`surface.SetTextPos` ile ayarlanmış veya `surface.DrawText` tarafından değiştirilmiş olan X ve Y koordinatını döndürür.
number, number surface.GetTextSize( string text )
`surface.SetFont` ile ayarlanmış olan yazı tipiyle verilen metnin genişliğini ve yüksekliğini (piksel cinsinden) döndürür. Yeni satırları dikkate almaz; döndürülen yükseklik, tek tek karakterlerin maksimumu değil, tüm yazı tipi içindir (yazı tipi tarafından belirtildiği gibi).
number surface.GetTextureID( string name/path )
`surface.SetTexture` ile kullanılmak üzere, verilen ad/yola sahip materyalin doku kimliğini (texture id) döndürür. Bu fonksiyonun tersi `surface.GetTextureNameByID`'dir. Bu fonksiyon .png veya .jpg resimleriyle çalışmaz. Bunun için `Material`'a bakın. Muhtemelen ne olursa olsun onu kullanmak isteyeceksiniz.
ID'ye göre dokunun adını/yolunu döndürür. Bu fonksiyonun tersi `surface.GetTextureID`'dir.
number, number surface.GetTextureSize( number textureID )
İlişkili doku ID'sine sahip dokunun boyutunu döndürür. `Material` ile yüklenen .png/.jpg dokuları için, görüntünün boyutunu almak üzere `$realheight` ve `$realwidth` materyal parametrelerini (`IMaterial:GetInt`) kullanabilirsiniz.
surface.PlaySound( string soundfile )
Doğrudan istemcide bir ses dosyası çalar (UI sesleri vb. gibi). Geçerli örnekleme oranları: 11025 Hz, 22050 Hz ve 44100 Hz, aksi takdirde şu tür bir mesaj görebilirsiniz: `Unsupported 32-bit wave file your_sound.wav` ve `Invalid sample rate (48000) for sound 'your_sound.wav'`
Bunu kullanmamanızı tavsiye ederiz. Gelecekteki bir güncellemede değiştirilebilir veya kaldırılabilir. Bunun yerine `ScrH` kullanmalısınız. Mevcut istemcinin ekranının yüksekliğini döndürür.
Bunu kullanmamanızı tavsiye ederiz. Gelecekteki bir güncellemede değiştirilebilir veya kaldırılabilir. Bunun yerine `ScrW` kullanmalısınız. Mevcut istemcinin ekranının genişliğini döndürür.
surface.SetAlphaMultiplier( number multiplier )
Yaklaşan tüm çizim işlemlerini etkileyecek alfa çarpanını ayarlar. Ayrıca bakınız: `render.SetBlend`.
surface.SetDrawColor( number r, number g, number b, number a = 255 ) (+ 1 overload)
Çizilecek gelecekteki herhangi bir şeklin rengini ayarlar; R, G, B, A'yı ayrı değerler olarak veya bir `Color` nesnesi kullanarak ayarlanabilir. `$vertexalpha` olmayan bir materyal kullanıyorsanız alfa değeri düzgün çalışmayabilir. Son işleme (post processing) ve gama düzeltmesi nedeniyle, bu fonksiyonla ayarladığınız renk, render edildiğinde farklı görünebilir. Bu sorun, `surface.DrawTexturedRect` ile çizilen materyallerde meydana gelmez.
surface.SetFont( string fontName )
Daha sonraki metin işlemleri için kullanılacak mevcut yazı tipini ayarlar. Yazı tipleri önce `surface.CreateFont` ile oluşturulmalı veya Varsayılan Yazı Tiplerinden biri olmalıdır.
surface.SetMaterial( IMaterial material )
`surface` kütüphanesini kullanan tüm gelecek çizim işlemlerinde kullanılacak materyali ayarlar. `render.SetMaterial` ile karıştırılmamalıdır. Dokuyu kaldırmanız gerekirse, `draw.NoTexture` kolaylık fonksiyonunu kullanın. `Material` fonksiyon çağrıları bu fonksiyon içinde veya render bağlamı içinde yapılması pahalıdır, `Material` çağrılarının sonuçlarını önbelleğe almalısınız
surface.SetTextColor( number r, number g, number b, number a = 255 )
Çizilecek gelecekteki herhangi bir metnin rengini ayarlar; R, G, B, A'yı ayrı sayılar olarak kullanarak ayarlanabilir.
surface.SetTextPos( number x, number y )
Gelecekteki herhangi bir metni çizmek için sol üst konumu ayarlar.
surface.SetTexture( number textureID )
`surface` kütüphanesini kullanan tüm gelecek çizim işlemlerinde kullanılacak dokuyu ayarlar. Bu eski bir metottur ve muhtemelen kullanılmamalıdır, daha iyi bir alternatif için `surface.SetMaterial` ve `IMaterial`'a bakın.

Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord