All Manuals > CAPI User Guide and Reference Manual > 22 GRAPHICS-PORTS Reference Entries

draw-image Function


Displays an image on a graphics port at a given position.




draw-image port image to-x to-y &rest args &key from-x from-y to-width to-height from-width from-height global-alpha

A graphics port.
An image.
to-x, to-y
Real numbers.
graphics-state parameters passed as keyword arguments.
from-x, from-y
Real numbers.
to-width, to-height
Real numbers.
from-width, from-height
Real numbers.
A real number in the inclusive range [0,1], or nil.

The function draw-image displays image on the port at to-x to-y. The transform, operation, mask and compositing-mode from port's graphics-state are all used, unless overridden in args.

The default values of from-x and from-y are 0. from-width and from-height default to the size of image. In addition, to-width defaults to from-width and to-height defaults to from-height.

When port's drawing-mode is :compatible, graphics state translation is guaranteed to be supported but support for scaling and rotation are library dependent. Specifically, scaling is supported in the Windows, Cocoa and GTK+ implementations, but not on X11/Motif.

When port's drawing-mode is :quality, the target coordinates are fully transformed according to the transformation in the graphics-state.

For more information about drawing-mode, see 13.2.1 The drawing mode and anti-aliasing.

global-alpha, if non-nil, is a blending factor that applies to the whole image, in the Windows and Cocoa implementations, but not on X11/Motif or GTK+. The value 0 means use only the target (that is, do not draw anything) and the value 1 means use only the source (that is, normal drawing). Intermediate real values mean use proportions of both the target and source. The value nil also means normal drawing, and this is the default value.


On Microsoft Windows, if the image was loaded from a .ico file then draw-image ignores from-x, from-y, from-width, from-height and the graphics-state operation when drawing the image, and also global-alpha is ignored.

Compatibility note

In LispWorks 6.1 and earlier versions, to-width and to-height defaulted to the size of the image and from-width defaulted to to-width and from-height defaulted to to-height.


This example scales an image with various values of from-width, to-width, from-height and to-height. It illustrates the effect of the default of these value which has changed since LispWorks 6.1:

(example-edit-file "capi/graphics/image-scaling")

Further examples:

Draw the whole image at (10 20) without scaling:

(gp:draw-image port image 10 20)

Draw the whole image at (10 20) scaling it to 100x200:

(gp:draw-image port image 10 20
               :to-width 100
               :to-height 200)

Draw a 16x32 pixel rectangle from (60 80) in the image at (10 20) without scaling:

(gp:draw-image port image 10 20
               :from-x 60
               :from-y 80
               :from-width 16
               :from-height 32)

Draw a 16x32 pixel rectangle from (60 80) in the image at (10 20) scaling it to 100x200:

(gp:draw-image port image 10 20
               :from-x 60
               :from-y 80
               :from-width 16
               :from-height 32
               :to-width 100
               :to-height 200)
See also

13 Drawing - Graphics Ports

CAPI User Guide and Reference Manual (Macintosh version) - 01 Dec 2021 19:31:44