使用图像文件作为光标
Using Image file as cursor
我是 Racket 和 Whosebug 的新手。我正在尝试使用 IMAGE.png 作为光标。但是光标的白色部分被背景色合并了。如果我将光标悬停在黑色粗线上,随着白色变得透明,光标完全不可见。白色应该是不透明的。
首先,我使用它,它有 256x256 维,32 位深度。我使用以下代码将尺寸调整为 16x16。
(require 2htdp/image)
(define mag IMAGE.png);; acutally, I used "insert image" in DrRacket IDE
(define new-mag (scale (/ 1 16) mag))
(save-image new-mag "mag.png")
new-mag
(image-width new-mag)
(image-height new-mag)
根据 cursor% 的文档,必须使用 16x16 位深度 1 的位图文件来创建光标。要将位深度更改为 1,应用以下代码。
(require racket/gui/base)
(define bm1 (read-bitmap "mag.png"))
(define bm2 (make-object bitmap% 16 16 #t #f 1.0))
(send (send bm2 make-dc)draw-bitmap bm1 0 0)
(send bm2 save-file "mag2use.png" 'png)
(define bm (read-bitmap "mag2use.png"))
(printf "~a ~a ~a ~a~n"
(send bm get-width)
(send bm get-height)
(send bm get-depth)
(send bm is-color?))
然后我使用位图mag2use.png作为光标。
(define zoom-cursor (make-object cursor% bm bm 0 0))
遗憾的是文档中没有提到遮罩参数是透明遮罩。
蒙版中的白色像素在光标中变得透明,并且您正在使用位图本身作为蒙版。
在蒙版中用黑色填充你想要不透明的部分。
我是 Racket 和 Whosebug 的新手。我正在尝试使用 IMAGE.png 作为光标。但是光标的白色部分被背景色合并了。如果我将光标悬停在黑色粗线上,随着白色变得透明,光标完全不可见。白色应该是不透明的。
首先,我使用它,它有 256x256 维,32 位深度。我使用以下代码将尺寸调整为 16x16。
(require 2htdp/image)
(define mag IMAGE.png);; acutally, I used "insert image" in DrRacket IDE
(define new-mag (scale (/ 1 16) mag))
(save-image new-mag "mag.png")
new-mag
(image-width new-mag)
(image-height new-mag)
根据 cursor% 的文档,必须使用 16x16 位深度 1 的位图文件来创建光标。要将位深度更改为 1,应用以下代码。
(require racket/gui/base)
(define bm1 (read-bitmap "mag.png"))
(define bm2 (make-object bitmap% 16 16 #t #f 1.0))
(send (send bm2 make-dc)draw-bitmap bm1 0 0)
(send bm2 save-file "mag2use.png" 'png)
(define bm (read-bitmap "mag2use.png"))
(printf "~a ~a ~a ~a~n"
(send bm get-width)
(send bm get-height)
(send bm get-depth)
(send bm is-color?))
然后我使用位图mag2use.png作为光标。
(define zoom-cursor (make-object cursor% bm bm 0 0))
遗憾的是文档中没有提到遮罩参数是透明遮罩。
蒙版中的白色像素在光标中变得透明,并且您正在使用位图本身作为蒙版。
在蒙版中用黑色填充你想要不透明的部分。