在相同的條件下,如都以pixels為單位,Printer.TextWidth ("姓名")
與Picture.TextWidth ("姓名")得到的結果不一樣,是咋回事?用什麼方法解決?
請各位大哥指點!小弟我感激不盡!!!
創作者介紹
創作者 vbqa 的頭像
vbqa

小吳 VBQA 程式設計討論

vbqa 發表在 痞客邦 留言(6) 人氣()


留言列表 (6)

發表留言
  • slanla
  • 剛剛稍微研究一下...
    如果將Printer改成Me之後就應該都一樣魯...
    至於為何不同ㄋ..沒研究喔^^"
    Private Sub Command1_Click()
    Form1.ScaleMode = 2
    Picture1.ScaleMode = 2
    na = "姓名": a = 18
    Print na
      Line (0, Me.TextHeight(na))-(Me.TextWidth(na), Me.TextHeight(na))
      Print
      Print na
      Line (0, Picture1.TextHeight(na) + a)-(Picture1.TextWidth(na), Picture1.TextHeight(na) + a)
      Print
    Print Me.TextWidth(na), Picture1.TextWidth(na)
    End Sub
  • 阿戊
  • 字形大小也設成一樣嗎?
  • 杰西
  • 先謝謝兩位大哥的指點!!!
    不好意思,沒有說明白,我的目的是用Printer列印出來,用Picture預視,我要分別用Printer.scalewidth,pritner.textwidth() picture.scalewidth,picture.textwidth() 來控制所列印的欄位總長不能超過列印範圍,字型大小也一樣,並要捕捉到當前所用的Paper Size.
    總的來說:就是要列印出的結果與預視的結果相一致彧成一定的比例.
  • 心冷熱情熄
  • 印表機解析度跟螢幕解析度不一樣
    印表機起碼解析度是一英吋 300 pixel (DPI) ,螢幕是 50 ~ 100 (DPI) ,視個人設定而略有不同
    至於 Me, Form, PictureBox 皆為參照螢幕解析度,當然是一樣的。
    不同解析度會略有不同,比較理想的方法是參照印表機解析度建立 EMF ,同時展現在螢幕或供列印使用,Office 系列軟體大部分採用此種方式,其它方式多為近似處理方式,而可能略有出入。
    另,一般在同時處理這類問題,遠東地區多採用公釐單位,英美地區或有採用英吋單位,很少採用 Pixel 單位。處理點陣檔用 Pixel 單位才比較方便。
  • 杰西
  • 謝謝心冷大哥的指點!
    建立EMF? 不怕大哥們見笑,我還不知道是什麼概念呢.能否指點一二?
    如果我把Pixel改為CM是否還存在同一類問題?
  • 心冷熱情熄
  • 是,不過會近似,因為解析度不同,所以有進位的關係