카테고리 없음
단위 변환
쵸코난
2021. 12. 15. 12:04
VBA에서는 pt 단위를 사용하는데 cm나 px로 변환이 필요할 때가 종종 있습니다.
이럴 때 사용할 수 있는 변환 식을 정리합니다.
0.2cm를 pt단위로 변경하려면 cm2pt(0.2)를 해주면 되겠습니다.
Option Explicit
'2번째 도형을 1번째 도형 오른쪽에 mySpace 만큼 띄움
Sub myAlign()
Dim sr As ShapeRange
Dim mySpace As Single
mySpace = cm2pt(0.2)
On Error Resume Next
Set sr = ActiveWindow.Selection.ShapeRange
If sr.Count <> 2 Then MsgBox "도형을 2개 선택하세요.": Exit Sub
On Error GoTo 0
sr(2).Left = sr(1).Left + sr(1).Width + mySpace
End Sub
Function cm2in(cm As Single) As Single
cm2in = cm * 2.54 '1in => 2.54cm
End Function
Function in2cm(inch As Single) As Single
in2cm = inch * 0.3937 '1cm => 0.3937in
End Function
Function pt2cm(pt As Single) As Single
pt2cm = pt * 0.0352778 '1pt => 0.0352778cm
End Function
Function cm2pt(cm As Single) As Single
cm2pt = cm * 28.346 '1cm => 28.3465pt
End Function
Function pt2px(pt As Double) As Single
pt2px = pt * 1.3333 '1pt = 1.3333px
End Function
Function px2pt(px As Double) As Single
px2pt = px * 0.75 '1px = 0.75pt
End Function
'// 화면확대비율이 100%인 경우임
Function px2cm(px As Single) As Single
px2cm = px * 0.02645835 '0.75 * 0.0352778
End Function
'// 화면확대비율이 100%인 경우임
Function cm2px(cm As Single) As Single
cm2px = cm * 37.7937218 '28.346 * 1.3333
End Function
cm나 인치는 인쇄를 위한 물리적인 크기단위이기 때문에 변동이 없지만
px은 화면 상의 단위라 가변적입니다.
따라서 만약 윈도우 디스플레이 설정에서 화면 확대가 2배 되어 있다면
cm나 인치단위의 특정 물리적인 크기의 이미지를 px로 변환한 다면 px값은 2배가 되어야 할 수도 있습니다.
추가. A4용지에 출력할 때 이미지 해상도 PPI 구하기
Sub Test()
Debug.Print PPI(794,1123) ' 96
Debug.Print PPI(2476, 3502) ' 300
Debug.Print PPI(6516, 9216) ' 788
End Sub
Function PPI(imgWidth as single, imgHeight as single) As Single 'Pixel Per Inch
'A4 Paper in Inch
paperWidth = 8.25
paperHeight = 11.67
PPI = Sqr(imgWidth ^ 2 + imgHeight ^ 2) / Sqr(paperWidth ^ 2 + paperHeight ^ 2)
'Debug.Print PPI
End Function
특정 종이 사이즈에서 선명하게 출력하기 위한 비트맵이미지의가로/세로 px크기 수치나 관련 팁은
아래 링크를 참고하세요.
https://kin.naver.com/qna/detail.naver?d1id=1&dirId=102020103&docId=410212499#answer1
ppt 픽셀 사진 관련 질문
픽셀 3278x4606짜리 사진을 b5 크기의 ppt에 넣으면 화질이 안 깨질까요?
kin.naver.com