bonkora 이 제공해 주신 팁입니다.
제가 시험해 보니 MS윈도의 비트맵 파일은 Tcl/Tk에서 불러서 사용할 수 없습니다.
Tcl/Tk의 비트맵 이미지는 전경색과 배경색으로 이루어져 있습니다.
각 픽셀이 전경색으로 되어 있는지 배경색으로 되어 있는지를 문자열에 기록하여 이것으로 비트맵 이미지를
만드는 방법이 있어 소개드립니다.
이 내용은 wiki.tcl.tk에서 구한 자료를 참조하였습니다.
proc str2bmp strimj {
set width [string length [lindex $strimj 0]]
set height [llength $strimj]
set bytes {}
foreach line [string map {. 0} $strimj] {
regsub -all {[^0]} $line 1 line ;# black pixel
foreach bin [split [binary format b* $line] ""] {
lappend bytes [scan $bin %c]
}
}
set res "#define i_width $width\n#define i_height $height\n"
append res "static char i_bits\[\] = {\n[join $bytes ,]\n}"
}
위 코드를 실행시키면 프러시저 str2bmp가 메모리에 적재됩니다.
아래에 변수 heart에 하트 그림을 나타내는 내용을 넣은 후 이 자료를 갖고 비트맵 이미지 i를 만들고 이 이미지를 버튼에 사용하는 예를 보여 드립니다.
아래 변수 heart에는 전경색을 나타낼 픽셀에는 '@'를 배경색을 나타낼 픽셀에는 '.'을 넣습니다. 행과 열을 맞추어 입력하는데, '@'나 '.' 외의 다른 글자가 들어가면 에러가 발생합니다.
set heart {
.................
.................
...@@@@...@@@@...
..@@@@@@.@@@@@@..
.@@@@@@@@@@@@@@@.
.@@@@@@@@@@@@@@@.
.@@@@@@@@@@@@@@@.
.@@@@@@@@@@@@@@@.
..@@@@@@@@@@@@@..
...@@@@@@@@@@@...
....@@@@@@@@@....
.....@@@@@@@.....
......@@@@@......
.......@@@.......
........@........
.................
}
image create bitmap i -data [str2bmp $heart] -background yellow -foreground red
button .b -image i
pack .b
'Tcl & Tk > 팁 (Tip)' 카테고리의 다른 글
모든 위젯에 툴팁 달기 (0) | 2025.03.06 |
---|---|
Wish8x를 실행시킬 때 마다 특정 코드를 자동실행 (0) | 2025.03.06 |
특정 윈도우의 자식 윗젯들을 한꺼번에 없애기 (0) | 2025.03.06 |
음악에 쓰이는 음들의 진동수(주파수) 구하는 식 (0) | 2025.03.06 |
C#용 Tcl/Tk 인터프리터 (0) | 2025.03.06 |