1
XTextWidth()
함수를 사용하여 문자열의 너비를 가져 오려고했지만 어떤 이유로 반환 된 값은 항상 실제 표시된 문자열 길이보다 큽니다.X 라이브러리에서 잘못된 문자열 길이 값을보고하는 이유는 무엇입니까?
내가 그것을 어떻게
import Control.Concurrent
import qualified Graphics.X11.Xlib as X
import qualified Graphics.X11.Xlib.Types as Xt
import qualified Graphics.X11.Types as Xt
main = do
display <- X.openDisplay ""
let dflt = X.defaultScreen display
border = X.blackPixel display dflt
background = X.whitePixel display dflt
rootw <- X.rootWindow display dflt
win <- X.createSimpleWindow display rootw 0 0 500 300 1 border background
X.mapWindow display win
X.moveWindow display win 0 0
updateScreen display win
updateScreen display win = do
gc <- X.createGC display win
bgcolor <- initColor display "white"
fgcolor <- initColor display "black"
X.setBackground display gc bgcolor
X.setForeground display gc fgcolor
font <- X.loadQueryFont display "-misc-fixed-*-*-*-*-14-*-*-*-*-*-*"
let str = "Some reasonably long string."
len = X.textWidth font str
putStrLn $ show len
X.drawImageString display win gc 0 50 str
X.freeFont display font
X.freeGC display gc
threadDelay 100000
updateScreen display win
initColor :: X.Display -> String -> IO X.Pixel
initColor dpy color = do
let colormap = X.defaultColormap dpy (X.defaultScreen dpy)
(apros,_) <- X.allocNamedColor dpy colormap color
return $ X.color_pixel apros
을 를 해결할 수 : 나는 화면의 폭을 측정하는 경우는
168
픽셀 (는 IS 다음 컴파일 가능한 및 실행 가능한 예) 주위 어딘가에있는 동안 다음의 예에서는, 인쇄 값이
196
입니까?