当前位置: 首页>>代码示例>>C++>>正文


C++ BMenu::MovePenTo方法代码示例

本文整理汇总了C++中BMenu::MovePenTo方法的典型用法代码示例。如果您正苦于以下问题:C++ BMenu::MovePenTo方法的具体用法?C++ BMenu::MovePenTo怎么用?C++ BMenu::MovePenTo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在BMenu的用法示例。


在下文中一共展示了BMenu::MovePenTo方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: frame

void
TBarMenuTitle::Draw()
{
    BMenu* menu = Menu();
    if (menu == NULL)
        return;

    BRect frame(Frame());
    rgb_color base = menu->LowColor();

    menu->PushState();

    BRect windowBounds = menu->Window()->Bounds();
    if (frame.right > windowBounds.right)
        frame.right = windowBounds.right;

    // fill in background
    if (IsSelected()) {
        be_control_look->DrawMenuItemBackground(menu, frame, frame, base,
            BControlLook::B_ACTIVATED);
    } else
        be_control_look->DrawButtonBackground(menu, frame, frame, base);

    menu->MovePenTo(ContentLocation());
    DrawContent();

    menu->PopState();
}
开发者ID:DonCN,项目名称:haiku,代码行数:28,代码来源:BarMenuTitle.cpp

示例2: frame

void
TWindowMenuItem::DrawContent()
{
    BMenu* menu = Menu();
    menu->PushState();

    BRect frame(Frame());
    BPoint contLoc = ContentLocation() + BPoint(kHPad, kVPad);
    //if (fExpanded)
    //	contLoc.x += kHPad;

    if (fID >= 0) {
        menu->SetDrawingMode(B_OP_OVER);

        float width = fBitmap->Bounds().Width();

        if (width > 16)
            contLoc.x -= 8;

        menu->MovePenTo(contLoc);
        menu->DrawBitmapAsync(fBitmap);

        if (width > 16)
            contLoc.x += 8;

        contLoc.x += kIconRect.Width() + kLabelOffset;
    }

    menu->SetDrawingMode(B_OP_COPY);

    contLoc.y = frame.top
        + ((frame.Height() - fTitleAscent - fTitleDescent) / 2) + 1.0f;

    menu->MovePenTo(contLoc);

    if (IsSelected())
        menu->SetHighColor(ui_color(B_MENU_SELECTED_ITEM_TEXT_COLOR));
    else
        menu->SetHighColor(ui_color(B_MENU_ITEM_TEXT_COLOR));

    BMenuItem::DrawContent();

    menu->PopState();
}
开发者ID:DonCN,项目名称:haiku,代码行数:44,代码来源:WindowMenuItem.cpp

示例3: Menu

void
TWindowMenuItem::DrawContent()
{
    BMenu* menu = Menu();
    BPoint contentLocation = ContentLocation() + BPoint(kHPad, 0);

    if (fID >= 0) {
        menu->SetDrawingMode(B_OP_OVER);

        float width = fBitmap->Bounds().Width();
        if (width > 16)
            contentLocation.x -= 8;

        float height;
        GetContentSize(NULL, &height);
        contentLocation.y += (height - fBitmap->Bounds().Height()) / 2;

        menu->MovePenTo(contentLocation);
        menu->DrawBitmapAsync(fBitmap);

        if (width > 16)
            contentLocation.x += 8;

        contentLocation.x += kIconRect.Width() + kLabelOffset;
    }
    contentLocation.y = ContentLocation().y + kVPad + fLabelAscent;

    menu->SetDrawingMode(B_OP_COPY);
    menu->MovePenTo(contentLocation);

    if (IsSelected())
        menu->SetHighColor(ui_color(B_MENU_SELECTED_ITEM_TEXT_COLOR));
    else
        menu->SetHighColor(ui_color(B_MENU_ITEM_TEXT_COLOR));

    float labelWidth = menu->StringWidth(Label());
    BPoint penLocation = menu->PenLocation();
    float offset = penLocation.x - Frame().left;

    menu->DrawString(Label(labelWidth + offset));
}
开发者ID:looncraz,项目名称:haiku,代码行数:41,代码来源:WindowMenuItem.cpp

示例4: frame

void
TTeamMenuItem::DrawContent()
{
    BMenu* menu = Menu();
    if (fIcon != NULL) {
        if (fIcon->ColorSpace() == B_RGBA32) {
            menu->SetDrawingMode(B_OP_ALPHA);
            menu->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY);
        } else
            menu->SetDrawingMode(B_OP_OVER);

        BRect frame(Frame());
        BRect iconBounds(fIcon->Bounds());
        BRect dstRect(iconBounds);
        float extra = fVertical ? 0.0f : -1.0f;
        BPoint contLoc = ContentLocation();
        BPoint drawLoc = contLoc + BPoint(kHPad, kVPad);

        if (!fDrawLabel || (fVertical && iconBounds.Width() > 32)) {
            float offsetx = contLoc.x
                + ((frame.Width() - iconBounds.Width()) / 2) + extra;
            float offsety = contLoc.y + 3.0f + extra;

            dstRect.OffsetTo(BPoint(offsetx, offsety));
            menu->DrawBitmapAsync(fIcon, dstRect);

            drawLoc.x = ((frame.Width() - LabelWidth()) / 2);
            drawLoc.y = frame.top + iconBounds.Height() + 4.0f;
        } else {
            float offsetx = contLoc.x + kHPad;
            float offsety = contLoc.y + 
                ((frame.Height() - iconBounds.Height()) / 2) + extra;

            dstRect.OffsetTo(BPoint(offsetx, offsety));
            menu->DrawBitmapAsync(fIcon, dstRect);

            float labelHeight = fLabelAscent + fLabelDescent;
            drawLoc.x += iconBounds.Width() + kLabelOffset;
            drawLoc.y = frame.top + ((frame.Height() - labelHeight) / 2) + extra;
        }

        menu->MovePenTo(drawLoc);
    }

    // set the pen to black so that either method will draw in the same color
    // low color is set in inherited::DrawContent, override makes sure its
    // what we want
    if (fDrawLabel) {
        menu->SetDrawingMode(B_OP_OVER);
        menu->SetHighColor(ui_color(B_MENU_ITEM_TEXT_COLOR));

        // override the drawing of the content when the item is disabled
        // the wrong lowcolor is used when the item is disabled since the
        // text color does not change
        DrawContentLabel();
    }

    // Draw the expandable icon.
    TBarView* barView = (static_cast<TBarApp*>(be_app))->BarView();
    if (fVertical && static_cast<TBarApp*>(be_app)->Settings()->superExpando
        && barView->ExpandoState()) {
        BRect frame(Frame());
        BRect rect(0, 0, kSwitchWidth, 10);
        rect.OffsetTo(BPoint(frame.right - rect.Width(),
            ContentLocation().y + ((frame.Height() - rect.Height()) / 2)));

        if (be_control_look != NULL) {
            uint32 arrowDirection = fExpanded
                ? BControlLook::B_UP_ARROW : BControlLook::B_DOWN_ARROW;
            be_control_look->DrawArrowShape(menu, rect, rect, menu->LowColor(),
                arrowDirection, 0, B_DARKEN_3_TINT);
        } else {
            rgb_color outlineColor = {80, 80, 80, 255};
            rgb_color middleColor = {200, 200, 200, 255};

            menu->SetDrawingMode(B_OP_OVER);

            if (!fExpanded) {
                menu->BeginLineArray(6);

                menu->AddLine(BPoint(rect.left + 3, rect.top + 1),
                    BPoint(rect.left + 3, rect.bottom - 1), outlineColor);
                menu->AddLine(BPoint(rect.left + 3, rect.top + 1),
                    BPoint(rect.left + 7, rect.top + 5), outlineColor);
                menu->AddLine(BPoint(rect.left + 7, rect.top + 5),
                    BPoint(rect.left + 3, rect.bottom - 1), outlineColor);

                menu->AddLine(BPoint(rect.left + 4, rect.top + 3),
                    BPoint(rect.left + 4, rect.bottom - 3), middleColor);
                menu->AddLine(BPoint(rect.left + 5, rect.top + 4),
                    BPoint(rect.left + 5, rect.bottom - 4), middleColor);
                menu->AddLine(BPoint(rect.left + 5, rect.top + 5),
                    BPoint(rect.left + 6, rect.top + 5), middleColor);
                menu->EndLineArray();
            } else {
                // expanded state

                menu->BeginLineArray(6);
                menu->AddLine(BPoint(rect.left + 1, rect.top + 3),
                    BPoint(rect.right - 3, rect.top + 3), outlineColor);
//.........这里部分代码省略.........
开发者ID:,项目名称:,代码行数:101,代码来源:

示例5: DrawContent

    virtual	void DrawContent()
    {
        BRect		b = Frame();
        BMenu		*parent = Menu();
        BPoint		loc = parent->PenLocation();

        enum {
            W_CHAR = 0,
            A_CHAR = 1,
            OPEN_CHAR = 2,
            CLOSE_CHAR = 3,
            SPACE_CHAR = 4,
            NUM_CHARS = 5
        };
        float escapements[NUM_CHARS];
        BFont font;
        parent->GetFont(&font);
        font.GetEscapements("WA() ", NUM_CHARS, escapements);
        for (int32 i=0; i<NUM_CHARS; i++) {
            escapements[i] *= font.Size();
        }

        const float blockWidth = escapements[W_CHAR]+escapements[A_CHAR];

        const rgb_color old_col = parent->HighColor();
        font_height fh;

        const bool showInitial = !CompareColors(fInitialColor, fColor);

        b.InsetBy(1, 1);
        b.bottom -= 1;
        b.left = loc.x;

        if (showInitial) {
            parent->GetFontHeight(&fh);
            parent->DrawString("(", BPoint(b.left, loc.y+fh.ascent));
        }
        b.left += escapements[OPEN_CHAR];
        b.InsetBy(2, 2);
        b.right = b.left + escapements[W_CHAR];
        if (showInitial) {
            parent->SetHighColor(fInitialColor);
            parent->FillRect(b);
        }
        b.InsetBy(-1, -1);
        if (showInitial) {
            parent->SetHighColor(old_col);
            parent->StrokeRect(b);
        }
        b.InsetBy(-1, -1);
        if (showInitial) {
            parent->DrawString(")", BPoint(b.right+1, loc.y+fh.ascent));
        }
        b.right += escapements[CLOSE_CHAR] + 1;

        b.left = b.right + escapements[SPACE_CHAR];
        b.right = b.left + blockWidth;

        parent->SetHighColor(fColor);
        parent->FillRect(b);
        parent->SetHighColor(old_col);
        b.InsetBy(-1, -1);
        parent->StrokeRect(b);

        parent->MovePenTo(b.right + escapements[SPACE_CHAR]*2 + 2, loc.y);

        BMenuItem::DrawContent();
    }
开发者ID:jessicah,项目名称:Vision,代码行数:68,代码来源:ColorSelector.cpp


注:本文中的BMenu::MovePenTo方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。