Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
41
Task/Bitmap/Racket/bitmap.rkt
Normal file
41
Task/Bitmap/Racket/bitmap.rkt
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
#lang racket
|
||||
|
||||
;; The racket/draw libraries provide imperative drawing functions.
|
||||
;; http://docs.racket-lang.org/draw/index.html
|
||||
(require racket/draw)
|
||||
|
||||
;; To create an image with width and height, use the make-bitmap
|
||||
;; function.
|
||||
|
||||
;; For example, let's make a small image here:
|
||||
(define bm (make-bitmap 640 480))
|
||||
|
||||
;; We use a drawing context handle, a "dc", to operate on the bitmap.
|
||||
(define dc (send bm make-dc))
|
||||
|
||||
;; We can fill the bitmap with a color by using a combination of
|
||||
;; setting the background, and clearing.
|
||||
(send dc set-background (make-object color% 0 0 0)) ;; Color it black.
|
||||
(send dc clear)
|
||||
|
||||
;; Let's set a few pixels to a greenish color with set-pixel:
|
||||
(define aquamarine (send the-color-database find-color "aquamarine"))
|
||||
(for ([i 480])
|
||||
(send dc set-pixel i i aquamarine))
|
||||
|
||||
;; We can get at the color of a bitmap pixel by using the get-pixel
|
||||
;; method. However, it may be faster to use get-argb-pixels if we
|
||||
;; need a block of the pixels. Let's use get-argb-pixels and look
|
||||
;; at a row starting at (0, 42)
|
||||
(define buffer (make-bytes (* 480 4))) ;; alpha, red, green, blue
|
||||
(send dc get-argb-pixels 0 42 480 1 buffer)
|
||||
|
||||
;; We can inspect the buffer
|
||||
(bytes-ref buffer 0) ;; and see that the first pixel's alpha is 255,
|
||||
(bytes-ref buffer 1) ;; and the red, green, and blue components are 0.
|
||||
(bytes-ref buffer 2)
|
||||
(bytes-ref buffer 3)
|
||||
|
||||
;; If we are using DrRacket, we can just print the bm as a toplevel expression
|
||||
;; to view the final image:
|
||||
bm
|
||||
Loading…
Add table
Add a link
Reference in a new issue