GeUserArea Manual

内容表

关于

GeUserArea is the base class for all gadgets that can be displayed in a GeDialog . A new gadget is created by implementing a subclass of GeUserArea . Such a gadget manages user interaction and draws the gadget interface in the GUI.

注意
GeUserArea based classes can only be used with a GeDialog or GeDialog based classes. To create a custom GUI element that can be used in the Attribute Manager one must implement a CustomGuiData / iCustomGui based plugin.

Allocation

An instance of a GeUserArea based class is typically stored as a member of the parent GeDialog . It is added to the dialog layout using:

GeDialog 手册 .

// This example adds the given user area "userarea" to the GeDialog layout.
private : MyUserArea _geUserArea;
public : Bool CreateLayout() { SetTitle( "GeUserArea Dialog" _s); C4DGadget * const userAreaGadget = this->AddUserArea(100, BFH_LEFT , 400, 100); if (userAreaGadget) this->AttachUserArea(_geUserArea, userAreaGadget);

The parent dialog is accessible with:

GeUserArea Based Classes

A custom user area is created by implementing a subclass of GeUserArea . This subclass can implement different virtual functions that define the behaviour of the gadget.

The user area is initiated with:

// This example initializes the GeUserArea and sets the timer. Bool Init() { this->SetTimer(500); // value in ms return true ; }

The size of the user area is handled with:

// This example defines the minimum size of this GeUserArea. Bool GetMinSize( Int32 & w, Int32 & h) { w = 400; h = 100; return true ; }

// This example stores the width and height after the GeUserArea was resized.

void Sized( Int32 w, Int32 h) { _width = w; _height = h; }

Different messages are sent to a user area:

// This example catches a message to set the cursor when the mouse is over the user area. Int32 Message( const BaseContainer & msg, BaseContainer & result) { // messages are identified by the BaseContainer ID switch (msg. GetId ()) { case BFM_GETCURSORINFO : { result. SetId ( BFM_GETCURSORINFO ); result. SetInt32 ( RESULT_CURSOR , MOUSE_POINT_HAND ); result. SetString ( RESULT_BUBBLEHELP , "This is an example GeUserArea" _s); return true ; } } return GeUserArea::Message (msg, result); }

The primary purpose of a user area is to draw the actual user interface:

// This example draws a white rectangle in the given region.

void DrawMsg( Int32 x1, Int32 y1, Int32 x2, Int32 y2, const BaseContainer & msg) { OffScreenOn(); SetClippingRegion(x1, y1, x2, y2); DrawSetPen( 向量 (1, 1, 1)); DrawRectangle(x1, y1, x2, y2); }
注意
To optimize the drawing call skip the redraw if only the focus has changed, see BFM_DRAW_REASON in Draw .

A user area can catch user interaction events:

// This example checks if the input device is the mouse. // If so, the mouse coordinates are transferred into local coordinates. Bool InputEvent( const BaseContainer & msg) { // check the input device switch (msg. GetInt32 ( BFM_INPUT_DEVICE )) { // some mouse interaction case BFM_INPUT_MOUSE : { // get the cursor position Int32 mx = msg. GetInt32 ( BFM_INPUT_X ); Int32 my = msg. GetInt32 ( BFM_INPUT_Y ); Global2Local(&mx, &my); ApplicationOutput ( "Mouse Event at " + String::IntToString (mx) + " - " + String::IntToString (my)); return true ; } } return false ; }

另请参阅 GeDialog Gadget Interaction .

Read-Only Properties

These properties can be read from a user area:

// This example sends the BFM_ACTION message from a GeUserArea to the parent GUI element. // This message can be caught in GeDialog::Message() or GeDialog::Command(). BaseContainer action( BFM_ACTION ); action.SetInt32( BFM_ACTION_ID , GetId()); SendParentMessage(action);

// This example changes the color of the user area depending on the focus.

void DrawMsg( Int32 x1, Int32 y1, Int32 x2, Int32 y2, const BaseContainer & msg) { OffScreenOn(); SetClippingRegion(x1, y1, x2, y2);

// check if the user area has the focus if (this->HasFocus()) DrawSetPen( 向量 (0.0, 0.0, 1.0)); else DrawSetPen( 向量 (0.0, 0.2, 0.8)); DrawRectangle(x1, y1, x2, y2); }

Timer

A user area can use an internal timer that calls GeUserArea::Timer() periodically.

// This example initializes the GeUserArea and sets the timer. Bool Init() { this->SetTimer(500); // value in ms return true ; }

// This example implements GeUserArea::Timer(). // The function is called in the interval defined with GeUserArea::SetTimer().

void Timer( const BaseContainer & msg) { ApplicationOutput ( "Timer tick" ); }

User Interaction

A user area can handle user interaction events by implementing GeUserArea::InputEvent() . The following functions are used to get more detailed information on the current event:

A special operation is a mouse drag event inside the user area. Such a mouse drag is initiated in reaction to certain user interaction using these functions:

// This example handles a mouse drag event of the left mouse button. const Int32 device = msg. GetInt32 ( BFM_INPUT_DEVICE ); const Int32 channel = msg. GetInt32 ( BFM_INPUT_CHANNEL );

// check if this is a mouse event triggered by the left mouse button if (device == BFM_INPUT_MOUSE && channel == BFM_INPUT_MOUSELEFT ) { BaseContainer channels; BaseContainer state; Int32 startX = msg. GetInt32 ( BFM_INPUT_X ); Int32 startY = msg. GetInt32 ( BFM_INPUT_Y ); Float deltaX = 0.0f; Float deltaY = 0.0f; Global2Local(&startX, &startY);

// start mouse drag MouseDragStart( BFM_INPUT_MOUSELEFT , ( Float )startX, ( Float )startY, MOUSEDRAGFLAGS::DONTHIDEMOUSE );

// handle mouse drag while (MouseDrag(&deltaX, &deltaY, &channels) == MOUSEDRAGRESULT::CONTINUE ) { // get state of the left mouse button if (! GetInputState ( BFM_INPUT_MOUSE , BFM_INPUT_MOUSELEFT , state)) break ;

// check if the mouse button is not pressed if (state. GetInt32 ( BFM_INPUT_VALUE ) == 0) break ;

// print something if the mouse has moved if (deltaX != 0.0 || deltaY != 0.0) ApplicationOutput ( "Mouse Drag" ); } MouseDragEnd(); return true ; }

Drag and Drop

The user can drag and drop various elements onto a user area. The user area is informed about this event through messages sent to GeUserArea::Message() . These functions are used to react to those messages:

另请参阅 Drag and Drop .

// This example handles a drag and drop event in GeUserArea::Message().

case BFM_DRAGRECEIVE : { // check drag area if (!CheckDropArea(msg, true , true )) break ; Int32 type; void * data = nullptr ;

// get the drag data if (!GetDragObject(msg, &type, &data)) return false ;

// check if an C4DAtom was dragged if (type != DRAGTYPE_ATOMARRAY ) return false ;

// get content const AtomArray * const elements = static_cast< AtomArray * > (data); // check content if (!elements-> GetIndex (0)) return false ;

// check if drag has finished if (msg. GetInt32 ( BFM_DRAG_FINISHED )) { // loop through all elements of the AtomArray for ( Int32 i = 0; i < elements-> GetCount (); ++i) { const C4DAtom * const atom = elements-> GetIndex (i);

// check if the given C4DAtom is a BaseList2D element if (atom && atom-> IsInstanceOf ( Tbaselist2d )) { const BaseList2D * const baselistObject = static_cast< const BaseObject * > (atom); ApplicationOutput ( "Dragged object: " + baselistObject-> GetName ()); } } } else { // if in drag, show different mouse cursor return SetDragDestination( MOUSE_POINT_HAND ); } return true ; }

It is also possible to start a drag and drop operation from a user area. This is typically done in reaction to some user interaction.

// This example starts a drag and drop operation. Bool InputEvent( const BaseContainer & msg) { const Int32 device = msg. GetInt32 ( BFM_INPUT_DEVICE ); const Int32 channel = msg. GetInt32 ( BFM_INPUT_CHANNEL ); if (device == BFM_INPUT_MOUSE ) { if (channel == BFM_INPUT_MOUSELEFT ) { // drag a color 向量 red(1.0, 0.0, 0.0);

// start a drag & drop event of dragging a color value if (HandleMouseDrag(msg, DRAGTYPE_RGB , &red, 0)) return true ; } } return false ; }

Parent Message

A user area can send messages to its parent GeDialog . This is typically done to inform the dialog that some user interaction occurred and that the managed values changed.

GUI and Interaction Messages Manual .

// This example sends the BFM_ACTION message from a GeUserArea to the parent GUI element. // This message can be caught in GeDialog::Message() or GeDialog::Command(). BaseContainer action( BFM_ACTION ); action.SetInt32( BFM_ACTION_ID , GetId()); SendParentMessage(action);

Drawing

Drawing Basics

The central task of a user area is to draw something to Cinema 4D 's user interface. The drawing operations have to happen inside the GeUserArea::DrawMsg() 函数。

The drawing operation can be triggered with:

Drawing Operations

The following functions can be used to draw inside the canvas provided by the user area. For more advanced drawing operations one can use a GeClipMap and GeUserArea::DrawBitmap() .

The color and opacity settings are handled with:

// This example draws a white background and a black text.

// draw a white background DrawSetPen( 向量 (1.0f)); DrawRectangle(x1, y1, x2, y2);

// draw some text DrawSetTextCol( 向量 (0.0f), 向量 (1.0f)); DrawText( "Hello World!" _s, 0, 0, DRAWTEXT_HALIGN_LEFT );

Different styles used with various drawing functions are ( LINESTYLE ):

These functions draw primitive shapes:

// This example draws shapes in a GeUserArea.

// draw base MAXON_SCOPE { const maxon::Vector2d center(300, 60); const maxon::Vector2d radius(40, 40); DrawSetPen( 向量 (1, 1, 0)); DrawEllipseFill(center, radius); DrawSetPen( 向量 (0, 0, 0)); DrawEllipseLine(center, radius); }

// draw eyes DrawSetPen( 向量 (0, 0, 0)); MAXON_SCOPE { const maxon::Vector2d center(285, 50); const maxon::Vector2d radius(3, 3); DrawEllipseFill(center, radius); } MAXON_SCOPE { const maxon::Vector2d center(315, 50); const maxon::Vector2d radius(3, 3); DrawEllipseFill(center, radius); }

// draw mouth MAXON_SCOPE { BezierPoint p; p. c1 = Vector2d (280, 90); p. c2 = Vector2d (320, 90); p. p = Vector2d (320, 70); DrawBezierLine( Vector2d (280, 70), maxon::ToSingletonBlock (p), false , 1.0, LINESTYLE::NORMAL ); }

A BaseBitmap can both be drawn to the canvas and filled with the current pen:

另请参阅 BaseBitmap Manual .

// This example fills a GeClipMap and draws the resulting BaseBitmap in the user area. AutoAlloc<GeClipMap> clipMap; if (clipMap) { // get monospaced font BaseContainer font; GeClipMap::GetDefaultFont ( GE_FONT_DEFAULT_MONOSPACED , &font); clipMap-> Init (200, 50, 32); clipMap-> BeginDraw ();

// fill background clipMap-> SetColor (255, 255, 255, 255); clipMap-> FillRect (0, 0, 200, 50);

// draw text clipMap-> SetFont (&font, 20.0); clipMap-> SetColor (0, 0, 0, 255); clipMap-> TextAt (0, clipMap-> GetTextHeight (), "This is some text." ); clipMap-> EndDraw ();

// get bitmap BaseBitmap * const bitmap = clipMap-> GetBitmap (); if (bitmap) { // draw bitmap const Int32 width = bitmap-> GetBw (); const Int32 height = bitmap-> GetBh (); DrawBitmap(bitmap, 0, 0, width, height, 0, 0, width, height, BMP_NORMAL ); } }

The border style of the user area is defined with:

// This example draws a round border for the GeUserArea. DrawBorder( BORDER_ROUND , 0, 0, GetWidth(), GetHeight());

Text is drawn with these functions:

// This example draws some text and a line under that text. const String text { "Hello World!" }; const Int32 left = 100;

// draw text DrawSetTextCol( 向量 (0.0f), 向量 (1.0f)); DrawSetFont( FONT_MONOSPACED ); DrawText(text, left, 0, DRAWTEXT_HALIGN_LEFT );

// draw a line const Int32 baseline = DrawGetFontBaseLine() + 1; const Int32 length = DrawGetTextWidth(text); DrawSetPen( 向量 (0.5f)); DrawLine(left, baseline, left + length, baseline);

A user area can support a dynamic fading effect that is typically used to change the background color of the gadget after the cursor moved over it:

另请参阅 衰退 .

// This example shows a GeUserArea that is "fading". // When the cursor is over the user area the fading is activated. // Cinema 4D will then send the message BFM_FADE to the user area so // it can interpolate a color and use this color to redraw itself. class FadingUserArea : public GeUserArea { public : FadingUserArea() { }; ~FadingUserArea() { }; Int32 消息 ( const BaseContainer & msg, BaseContainer & result) { // messages are identified by the BaseContainer ID switch (msg. GetId ()) { case BFM_GETCURSORINFO : { // cursor is over the user area // start fading ActivateFading (100); return true ; } case BFM_FADE : { // receive fade message and update the COLOR_BG used in DrawMsg() const Float percentage = msg. GetFloat ( BFM_FADE ); AdjustColor ( COLOR_BG , COLOR_BG_HIGHLIGHT , percentage);

// redraw using the updated COLOR_BG Redraw (); return true ; } } return GeUserArea::Message (msg, result); } void DrawMsg ( Int32 x1, Int32 y1, Int32 x2, Int32 y2, const BaseContainer & msg) { OffScreenOn (); SetClippingRegion (x1, y1, x2, y2); // draw background with COLOR_BG DrawSetPen ( COLOR_BG ); DrawRectangle (x1, y1, x2, y2); // draw text DrawSetTextCol ( COLOR_CONSOLE_TEXT , COLOR_TRANS ); DrawSetFont ( FONT_MONOSPACED ); DrawText ( "User Area" _s, 0, 0, DRAWTEXT_HALIGN_LEFT ); } };

It is also possible to be informed when the cursor leaves the user area:

// This example user area registers a callback function with RemoveLastCursorInfo(). // This function is called when the cursor leaves the user area. It is used to send the // message BFM_CURSORINFO_REMOVE back to the user area to inform it about the event.

// declarations static void RemoveCursorInfo(); class RemoveCursorUserArea; static RemoveCursorUserArea* g_userArea = nullptr ; // static variable storing pointer to a user area

// user area will display a different color depending if the cursor is over the area or not class RemoveCursorUserArea : public GeUserArea { public : RemoveCursorUserArea() { if (g_userArea == this ) g_userArea = nullptr ; }; ~RemoveCursorUserArea() { }; Int32 消息 ( const BaseContainer & msg, BaseContainer & result) { // messages are identified by the BaseContainer ID switch (msg. GetId ()) { case BFM_GETCURSORINFO : { // register RemoveCursorInfo() callback g_userArea = this ; RemoveLastCursorInfo (RemoveCursorInfo); _cursorInside = true ; Redraw (); return true ; } case BFM_CURSORINFO_REMOVE : { // message "BFM_CURSORINFO_REMOVE" sent by RemoveCursorInfo() _cursorInside = false ; Redraw (); break ; } } return GeUserArea::Message (msg, result); } void DrawMsg ( Int32 x1, Int32 y1, Int32 x2, Int32 y2, const BaseContainer & msg) { OffScreenOn (); SetClippingRegion (x1, y1, x2, y2);

// gadget color is controlled by the cursor position

if (_cursorInside) DrawSetPen ( 向量 (1.0, 0.0, 0.0)); else DrawSetPen ( 向量 (0.0, 1.0, 0.0)); DrawRectangle (x1, y1, x2, y2); } private : Bool _cursorInside = false ; // set to true if the cursor is over the user area };

// function will be called by the user area when the cursor left its area static void RemoveCursorInfo() { if (g_userArea == nullptr ) return ;

// send message to the user area BaseContainer bc; g_userArea->Message( BaseContainer ( BFM_CURSORINFO_REMOVE ), bc); }

裁剪

Clipping is used to limit drawing operations to certain areas:

// This example draws a white rectangle in the given region.

void DrawMsg( Int32 x1, Int32 y1, Int32 x2, Int32 y2, const BaseContainer & msg) { OffScreenOn(); SetClippingRegion(x1, y1, x2, y2); DrawSetPen( 向量 (1, 1, 1)); DrawRectangle(x1, y1, x2, y2); }

杂项

Miscellaneous functions are:

Coordinate Transformation

These functions are used to transform coordinates into different spaces:

// This example creates a pop up menu when the right mouse button was pressed. Bool InputEvent( const BaseContainer & msg) { const Int32 device = msg. GetInt32 ( BFM_INPUT_DEVICE ); const Int32 channel = msg. GetInt32 ( BFM_INPUT_CHANNEL );

// check if this is a mouse event triggered by the left mouse button if (device == BFM_INPUT_MOUSE && channel == BFM_INPUT_MOUSERIGHT ) { // get the cursor position Int32 x = msg. GetInt32 ( BFM_INPUT_X ); Int32 y = msg. GetInt32 ( BFM_INPUT_Y ); Global2Local(&x, &y); Local2Screen(&x, &y);

// define pop up menu BaseContainer bc; bc. InsData (5159, "CMD" ); // cube bc. InsData (0, String ()); bc. InsData (5160, "CMD" ); // sphere

// show pop up menu ShowPopupMenu (GetDialog()-> Get (), x, y, bc); return true ; } return false ; }

延伸阅读

COLOR_BG
@ COLOR_BG
定义: c4d_colors.h:16
BFH_LEFT
@ BFH_LEFT
Aligned to the left. 1<<3.
定义: gui.h:306
BFM_ACTION
@ BFM_ACTION
One of the child elements made any action:
定义: gui.h:721
GeUserArea::DrawSetPen
void DrawSetPen(const Vector &color)
ShowPopupMenu
Int32 ShowPopupMenu(CDialog *cd, Int32 screenx, Int32 screeny, const BaseContainer &bc, Int32 flags=POPUP_RIGHT|POPUP_EXECUTECOMMANDS, Int32 *res_mainid=nullptr)
BaseList2D
定义: c4d_baselist.h:2144
GeClipMap::Init
IMAGERESULT Init(Int32 w, Int32 h, Int32 bits)
DRAGTYPE_ATOMARRAY
@ DRAGTYPE_ATOMARRAY
AtomArray.
定义: gui.h:759
BFM_DRAGRECEIVE
@ BFM_DRAGRECEIVE
Drag receive. (See DragAndDrop.)
定义: gui.h:747
BFM_INPUT_VALUE
@ BFM_INPUT_VALUE
Int32 Value of the input channel (true/false or a Int32 value, e.g. for scroll wheel data).
定义: gui.h:701
GeUserArea::DrawSetFont
void DrawSetFont(Int32 fontid)
GetInputState
Bool GetInputState(Int32 askdevice, Int32 askchannel, BaseContainer &res)
BaseObject
定义: c4d_baseobject.h:224
BFM_INPUT_DEVICE
@ BFM_INPUT_DEVICE
Int32 Device:
定义: gui.h:686
BaseContainer::SetInt32
void SetInt32(Int32 id, Int32 l)
定义: c4d_basecontainer.h:505
BaseContainer::SetString
void SetString(Int32 id, const maxon::String &s)
定义: c4d_basecontainer.h:569
Float
maxon::Float Float
定义: ge_sys_math.h:64
GeUserArea::DrawText
void DrawText(const maxon::String &txt, Int32 x, Int32 y, Int32 flags=(0|(0<< 4)))
DRAWTEXT_HALIGN_LEFT
#define DRAWTEXT_HALIGN_LEFT
Align to the left.
定义: c4d_gui.h:181
BFM_INPUT_MOUSERIGHT
@ BFM_INPUT_MOUSERIGHT
Right mouse button.
定义: gui.h:693
MOUSEDRAGFLAGS::DONTHIDEMOUSE
@ DONTHIDEMOUSE
Show mouse pointer during drag.
GeUserArea::DrawMsg
virtual void DrawMsg(Int32 x1, Int32 y1, Int32 x2, Int32 y2, const BaseContainer &msg)
COLOR_BG_HIGHLIGHT
@ COLOR_BG_HIGHLIGHT
定义: c4d_colors.h:329
GeUserArea::SetClippingRegion
void SetClippingRegion(Int32 x, Int32 y, Int32 w, Int32 h)
AtomArray::GetCount
Int32 GetCount() const
定义: c4d_baselist.h:1619
BFM_ACTION_ID
@ BFM_ACTION_ID
Int32 ID of the dialog element that triggered the action.
定义: gui.h:722
COLOR_TRANS
@ COLOR_TRANS
定义: c4d_colors.h:14
BaseContainer::GetFloat
Float GetFloat(Int32 id, Float preset=0.0) const
定义: c4d_basecontainer.h:335
RESULT_CURSOR
@ RESULT_CURSOR
Int32 Mouse cursor: MOUSE
定义: gui.h:542
BFM_FADE
@ BFM_FADE
定义: gui.h:981
Vector2d
maxon::Vec2< maxon::Float64, 1 > Vector2d
定义: ge_math.h:147
GeClipMap::GetTextHeight
Int32 GetTextHeight()
BezierPoint::p
Vector2d p
定义: ge_prepass.h:41
MOUSE_POINT_HAND
static const Int32 MOUSE_POINT_HAND
Point hand cursor.
定义: ge_prepass.h:2495
GeClipMap::GetDefaultFont
static Bool GetDefaultFont(GeFontDefaultType type, BaseContainer *font_description)
GeUserArea::DrawSetTextCol
void DrawSetTextCol(Int32 fg, Int32 bg)
BaseBitmap::GetBw
Int32 GetBw(void) const
定义: c4d_basebitmap.h:550
BaseContainer::GetId
Int32 GetId() const
定义: c4d_basecontainer.h:131
BezierPoint::c2
Vector2d c2
定义: ge_prepass.h:40
GeClipMap::BeginDraw
void BeginDraw()
Must be called before any drawing functions.
GeClipMap::TextAt
void TextAt(Int32 x, Int32 y, const String &txt)
GeClipMap::GetBitmap
BaseBitmap * GetBitmap()
BORDER_ROUND
@ BORDER_ROUND
Border with round corners.
定义: gui.h:265
GeUserArea::AdjustColor
void AdjustColor(Int32 colorid, Int32 highlightid, Float percent)
GeUserArea::Message
virtual Int32 Message(const BaseContainer &msg, BaseContainer &result)
String
定义: c4d_string.h:38
maxon::ToSingletonBlock
Block< T > ToSingletonBlock(T &value)
定义: block.h:907
GeClipMap::SetColor
void SetColor(Int32 r, Int32 g, Int32 b, Int32 a=255)
String::IntToString
static String IntToString(Int32 v)
定义: c4d_string.h:495
BFM_CURSORINFO_REMOVE
@ BFM_CURSORINFO_REMOVE
Sent when mouse cursor has left a user area.
定义: gui.h:555
maxon::Vec3< maxon::Float64, 1 >
BFM_DRAG_FINISHED
@ BFM_DRAG_FINISHED
Bool Drag finished.
定义: gui.h:770
maxon::Classes::Get
const Class< R > & Get(const Id &cls)
定义: objectbase.h:1903
FONT_MONOSPACED
@ FONT_MONOSPACED
Monospaced font.
定义: gui.h:26
RemoveLastCursorInfo
Bool RemoveLastCursorInfo(LASTCURSORINFOFUNC func)
BFM_INPUT_CHANNEL
@ BFM_INPUT_CHANNEL
Int32 Contains the key or mouse button. See also KEY.
定义: gui.h:691
BFM_GETCURSORINFO
@ BFM_GETCURSORINFO
定义: gui.h:539
BaseBitmap::GetBh
Int32 GetBh(void) const
定义: c4d_basebitmap.h:556
maxon::Vec2< Float, 1 >
Tbaselist2d
#define Tbaselist2d
2D list.
定义: ge_prepass.h:938
GeUserArea::OffScreenOn
Bool OffScreenOn(void)
C4DAtom
定义: c4d_baselist.h:1331
Int32
maxon::Int32 Int32
定义: ge_sys_math.h:58
GeUserArea::Redraw
void Redraw(Bool threaded=false)
ApplicationOutput
#define ApplicationOutput(formatString,...)
定义: debugdiagnostics.h:207
BezierPoint
定义: ge_prepass.h:37
BaseContainer::SetId
void SetId(Int32 c_id)
定义: c4d_basecontainer.h:137
MOUSEDRAGRESULT::CONTINUE
@ CONTINUE
Drag still in progress.
GeClipMap::FillRect
void FillRect(Int32 x1, Int32 y1, Int32 x2, Int32 y2)
LINESTYLE::NORMAL
@ NORMAL
DRAGTYPE_RGB
@ DRAGTYPE_RGB
RGB color.
定义: gui.h:761
COLOR_CONSOLE_TEXT
@ COLOR_CONSOLE_TEXT
定义: c4d_colors.h:94
BezierPoint::c1
Vector2d c1
定义: ge_prepass.h:39
BFM_INPUT_Y
@ BFM_INPUT_Y
Float Y value.
定义: gui.h:704
向量
maxon::Vec3< maxon::Float64, 1 > Vector
定义: ge_math.h:145
BFM_INPUT_MOUSE
@ BFM_INPUT_MOUSE
Mouse.
定义: gui.h:687
BaseBitmap
定义: c4d_basebitmap.h:410
BFM_INPUT_MOUSELEFT
@ BFM_INPUT_MOUSELEFT
Left mouse button.
定义: gui.h:692
AutoAlloc
定义: ge_autoptr.h:36
BMP_NORMAL
@ BMP_NORMAL
Standard scaling by the operating system. Fast but low quality when using uneven scaling factors.
定义: gui.h:169
BaseContainer::InsData
GeData * InsData(Int32 id, const GeData &n)
定义: c4d_basecontainer.h:238
Bool
maxon::Bool Bool
定义: ge_sys_math.h:53
GeClipMap::EndDraw
void EndDraw()
Must be called after a sequence of drawing functions to free the memory allocated by BeginDraw().
RESULT_BUBBLEHELP
@ RESULT_BUBBLEHELP
String Bubble help text.
定义: gui.h:543
C4DAtom::IsInstanceOf
Bool IsInstanceOf(Int32 id) const
定义: c4d_baselist.h:1373
BaseList2D::GetName
String GetName() const
定义: c4d_baselist.h:2318
GE_FONT_DEFAULT_MONOSPACED
@ GE_FONT_DEFAULT_MONOSPACED
The Cinema 4D monospaced font.
定义: lib_clipmap.h:122
GeClipMap::SetFont
Bool SetFont(BaseContainer const *font_description, Float font_size=0.0)
AtomArray
定义: c4d_baselist.h:1587
BFM_INPUT_X
@ BFM_INPUT_X
Float X value.
定义: gui.h:703
GeUserArea::ActivateFading
void ActivateFading(Int32 milliseconds)
BaseContainer::GetInt32
Int32 GetInt32(Int32 id, Int32 preset=0) const
定义: c4d_basecontainer.h:303
MAXON_SCOPE
#define MAXON_SCOPE
定义: apibase.h:2645
GeUserArea
定义: c4d_gui.h:163
BaseContainer
定义: c4d_basecontainer.h:46
GeUserArea::DrawRectangle
void DrawRectangle(Int32 x1, Int32 y1, Int32 x2, Int32 y2)
C4DGadget
Represents a gadget in a dialog.
定义: c4d_gui.h:99
AtomArray::GetIndex
C4DAtom * GetIndex(Int32 idx) const
定义: c4d_baselist.h:1634

Copyright  © 2014-2025 乐数软件    

工业和信息化部: 粤ICP备14079481号-1