drawIcon: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "<code>([^<]*)\[\[([a-zA-Z][a-zA-Z0-9_]+)\]\]([^<]*) *<\/code>" to "<code>$1$2$3</code>")
m (Text replacement - "<code>([^<]*)\[\[([a-zA-Z][a-zA-Z0-9_]+)\]\]([^<]*) *<\/code>" to "<code>$1$2$3</code>")
Line 62: Line 62:
<code>findDisplay 12 displayCtrl 51 ctrlAddEventHandler ["Draw", {
<code>findDisplay 12 displayCtrl 51 ctrlAddEventHandler ["Draw", {
_this select 0 drawIcon [
_this select 0 drawIcon [
"iconStaticMG", // Custom images can also be used: [[getMissionPath]] "\myFolder\myIcon.paa"
"iconStaticMG", // Custom images can also be used: getMissionPath "\myFolder\myIcon.paa"
[1,0,0,1],
[1,0,0,1],
[[getPosASLVisual]] [[player]],
[[getPosASLVisual]] [[player]],
Line 81: Line 81:
"#(rgb,1,1,1)color(1,1,1,1)",
"#(rgb,1,1,1)color(1,1,1,1)",
[0,1,0,1],
[0,1,0,1],
[[player]],
player,
0,
0,
0,
0,
Line 102: Line 102:
Example:
Example:
<code>onEachFrame {
<code>onEachFrame {
  findDisplay 12 displayCtrl 51 drawIcon ['iconStaticMG',[1,0,0,1],getPos player,24,24,[[getDir]] [[player]],'Player Vehicle',1,0.03,'TahomaB','right'];
  findDisplay 12 displayCtrl 51 drawIcon ['iconStaticMG',[1,0,0,1],getPos player,24,24,getDir [[player]],'Player Vehicle',1,0.03,'TahomaB','right'];
};</code>
};</code>
</dd>
</dd>

Revision as of 14:05, 12 May 2022

Hover & click on the images for description

Description

Description:
Draws an icon on the map. This command needs to be called every frame, preferably using the onDraw UI Event Handler. Some useful icons can be found in configfile >> "CfgVehicleIcons".
Problems:
Since command has to be drawn on each frame, performance can be degrade!
Groups:
GUI Control - Map

Syntax

Syntax:
map drawIcon [texture, color, position, width, height, angle, text, shadow, textSize, font, align]
Parameters:
map: Control
texture: String - Icon texture
color: Array - Text and icon color in format Color(RGBA)
position: Position2D, Position3D or Object
width: Number - Width of the icon (but not the text)
height: Number - Height of the icon (but not the text)
angle: Number - Rotation angle of the icon (but not the text)
text (Optional): String
shadow (Optional): Number or Boolean - Can be:
  • 0 (false): no shadow
  • 1: shadow (for text)
  • 2 (true): outline (works for text and for icon only if icon angle is 0)
since Arma 3 logo black.png0.72
textSize (Optional): Number - Size of the text in UI units
since Arma 3 logo black.png0.72
font: String - (Optional) text's font
since Arma 3 logo black.png0.72
align: String - Optional, default: "right") text alignment. Can be:
  • "left"
  • "right"
  • "center"
Return Value:
Nothing

Examples

Example 1:
Red icon with text: findDisplay 12 displayCtrl 51 ctrlAddEventHandler ["Draw", { _this select 0 drawIcon [ "iconStaticMG", // Custom images can also be used: getMissionPath "\myFolder\myIcon.paa" [1,0,0,1], getPosASLVisual player, 24, 24, getDirVisual player, "Player Vehicle", 1, 0.03, "TahomaB", "right" ] }];
Example 2:
Green text only: findDisplay 12 displayCtrl 51 ctrlAddEventHandler ["Draw", { _this select 0 drawIcon [ "#(rgb,1,1,1)color(1,1,1,1)", [0,1,0,1], player, 0, 0, 0, name player ] }];

Additional Information

See also:
drawArrow drawEllipse drawLine drawRectangle drawPolygon drawTriangle

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
Posted on January 4, 2016 - 05:41 (UTC)
Benargee
Arma 3 1.54
This command does not seem to play nice with onEachFrame. It seems to draw on the main screen while maintaing position relative to the map position
Example: onEachFrame { findDisplay 12 displayCtrl 51 drawIcon ['iconStaticMG',[1,0,0,1],getPos player,24,24,getDir player,'Player Vehicle',1,0.03,'TahomaB','right']; };
Leopard20 - c
Posted on May 09, 2022 - 19:34 (UTC)
The icon size always stays the same, even after zooming in/out. To make the icon get bigger with map zoom, use this for width and height size:
private _scale = 6.4 * worldSize / 8192 * ctrlMapScale _map; private _size = _sizeInMeters / _scale;
For example, the following icon has an exact size of 50 meters on the map, even after zooming in/out:
private _scale = 6.4 * worldSize / 8192 * ctrlMapScale _map; private _size = 50 / _scale; _map drawIcon ["iconStaticMG", [1,0,0,1], getPosASLVisual player, _size, _size, 0]