本文整理汇总了C++中wxDC::DrawRectangle方法的典型用法代码示例。如果您正苦于以下问题:C++ wxDC::DrawRectangle方法的具体用法?C++ wxDC::DrawRectangle怎么用?C++ wxDC::DrawRectangle使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类wxDC
的用法示例。
在下文中一共展示了wxDC::DrawRectangle方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: RectangleDraw
void SurfaceImpl::RectangleDraw(PRectangle rc, ColourAllocated fore, ColourAllocated back) {
PenColour(fore);
BrushColour(back);
hdc->DrawRectangle(wxRectFromPRectangle(rc));
}
示例2: Draw
// Draw all tabs
void wxTabView::Draw(wxDC& dc)
{
// Don't draw anything if there are no tabs.
if (GetNumberOfTabs() == 0)
return;
// Draw top margin area (beneath tabs and above view area)
if (GetTabStyle() & wxTAB_STYLE_COLOUR_INTERIOR)
{
dc.SetPen(*wxTRANSPARENT_PEN);
if(GetBackgroundBrush())
dc.SetBrush(*GetBackgroundBrush());
// Add 1 because the pen is transparent. Under Motif, may be different.
dc.DrawRectangle(
m_tabViewRect.x,
(m_tabViewRect.y - m_topMargin),
(m_tabViewRect.width + 1),
(m_topMargin + 1)
);
}
// Draw layers in reverse order
wxTabLayerList::compatibility_iterator node = m_layers.GetLast();
while (node)
{
wxTabLayer *layer = (wxTabLayer *)node->GetData();
wxList::compatibility_iterator node2 = layer->GetFirst();
while (node2)
{
wxTabControl *control = (wxTabControl *)node2->GetData();
control->OnDraw(dc, (!node2->GetNext()));
node2 = node2->GetNext();
}
node = node->GetPrevious();
}
#ifndef wxUSE_NEW_METHOD
if (GetTabStyle() & wxTAB_STYLE_DRAW_BOX)
{
dc.SetPen(* GetShadowPen());
// Draw bottom line
dc.DrawLine(
(GetViewRect().x + 1),
(GetViewRect().y + GetViewRect().height),
(GetViewRect().x + GetViewRect().width + 1),
(GetViewRect().y + GetViewRect().height)
);
// Draw right line
dc.DrawLine(
(GetViewRect().x + GetViewRect().width),
(GetViewRect().y - GetTopMargin() + 1),
(GetViewRect().x + GetViewRect().width),
(GetViewRect().y + GetViewRect().height)
);
dc.SetPen(* wxBLACK_PEN);
// Draw bottom line
dc.DrawLine(
(GetViewRect().x),
(GetViewRect().y + GetViewRect().height + 1),
#if defined(__WXMOTIF__)
(GetViewRect().x + GetViewRect().width + 1),
#else
(GetViewRect().x + GetViewRect().width + 2),
#endif
(GetViewRect().y + GetViewRect().height + 1)
);
// Draw right line
dc.DrawLine(
(GetViewRect().x + GetViewRect().width + 1),
(GetViewRect().y - GetTopMargin()),
(GetViewRect().x + GetViewRect().width + 1),
(GetViewRect().y + GetViewRect().height + 1)
);
}
#endif
}
示例3: DrawBorder
void EDA_DOCKART::DrawBorder( wxDC& aDC, wxWindow* aWindow, const wxRect& aRect,
wxAuiPaneInfo& aPane )
{
const wxRect& r = aRect;
aDC.SetPen( m_borderPen );
aDC.SetBrush( *wxTRANSPARENT_BRUSH );
// notebooks draw the border themselves, so they can use native rendering (e.g. tabartgtk)
wxAuiTabArt* art = nullptr;
wxAuiNotebook* nb = wxDynamicCast( aWindow, wxAuiNotebook );
if( nb )
art = nb->GetArtProvider();
if( art )
{
art->DrawBorder( aDC, aWindow, r );
}
else if( aPane.name == "DrawFrame" || aPane.name == "DrawFrameGal" )
{
// We don't want to re-write the layout manager, so we give the canvas a single-pixel
// border and then fill in the top and left with the canvas background colour.
//
// This achieves a right-bottom-bordered canvas, which works reasonably well with
// wxWidgets right-bottom bordered toolbars.
//wxWindow* window = reinterpret_cast<wxWindow*>( m_frame->GetCanvas() );
//wxSize scrollbarSize = window->GetSize() - window->GetClientSize();
// Not sure why it takes a pen twice as wide as the border to fill it in, but it does.
#if 0
int borderWidth = GetMetric( wxAUI_DOCKART_PANE_BORDER_SIZE ) * 2;
int borderAdjust = borderWidth;
aDC.SetPen( wxPen( m_frame->GetDrawBgColor().ToColour(), borderWidth ) );
// Yes, this leaves me scratching my head too.
if( m_frame->IsType( FRAME_PCB )
|| m_frame->IsType( FRAME_PCB_MODULE_EDITOR )
|| m_frame->IsType( FRAME_PCB_MODULE_VIEWER )
|| m_frame->IsType( FRAME_PCB_MODULE_VIEWER_MODAL )
|| m_frame->IsType( FRAME_GERBER ) )
{
borderAdjust += 1;
}
// left
aDC.DrawLine( r.x + 1, r.y, r.x + 1, r.y + r.height - borderAdjust - scrollbarSize.y );
// top
aDC.DrawLine( r.x + 1, r.y, r.x + r.width - borderAdjust - scrollbarSize.x, r.y );
aDC.SetPen( m_borderPen );
// finish off bottom of left side (at end of scrollbar)
aDC.DrawLine( r.x, r.y + r.height - 1 - scrollbarSize.y, r.x, r.y + r.height - 1 );
// right
aDC.DrawLine( r.x + r.width, r.y, r.x + r.width, r.y + r.height - 1 );
// bottom
aDC.DrawLine( r.x, r.y + r.height - 1, r.x + r.width - 1, r.y + r.height - 1 );
#endif
}
else
{
aDC.DrawRectangle( r );
}
}
示例4: Paint
void wxCustomButton::Paint( wxDC &dc )
{
#if (wxMINOR_VERSION<8)
dc.BeginDrawing();
#endif
int w, h;
GetSize(&w,&h);
wxColour foreColour = GetForegroundColour();
wxColour backColour = GetBackgroundColour();
if (m_focused)
{
backColour.Set( wxMin(backColour.Red() + 20, 255),
wxMin(backColour.Green() + 20, 255),
wxMin(backColour.Blue() + 20, 255) );
}
wxBitmap bitmap;
if (IsEnabled())
{
if (GetValue() && m_bmpSelected.Ok())
bitmap = m_bmpSelected;
else if (m_focused && m_bmpFocus.Ok())
bitmap = m_bmpFocus;
else if (m_bmpLabel.Ok())
bitmap = m_bmpLabel;
}
else
{
// try to create disabled if it doesn't exist
if (!m_bmpDisabled.Ok() && m_bmpLabel.Ok())
m_bmpDisabled = CreateBitmapDisabled(m_bmpLabel);
if (m_bmpDisabled.Ok())
bitmap = m_bmpDisabled;
else if (m_bmpLabel.Ok())
bitmap = m_bmpLabel;
foreColour = wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT);
}
wxBrush brush(backColour, wxSOLID);
dc.SetBackground(brush);
dc.SetBrush(brush);
dc.SetPen(*wxTRANSPARENT_PEN);
dc.DrawRectangle(0, 0, w, h);
if (bitmap.Ok())
dc.DrawBitmap(bitmap, m_bitmapPos.x, m_bitmapPos.y, TRUE );
if (!GetLabel().IsEmpty())
{
dc.SetFont(GetFont());
dc.SetTextBackground(backColour);
dc.SetTextForeground(foreColour);
dc.DrawText(GetLabel(), m_labelPos.x, m_labelPos.y);
}
if (GetValue()) // draw sunken border
{
dc.SetPen(*wxGREY_PEN);
dc.DrawLine(0,h-1,0,0); dc.DrawLine(0,0,w,0);
dc.SetPen(*wxWHITE_PEN);
dc.DrawLine(w-1,1,w-1,h-1); dc.DrawLine(w-1,h-1,0,h-1);
dc.SetPen(*wxBLACK_PEN);
dc.DrawLine(1,h-2,1,1); dc.DrawLine(1,1,w-1,1);
}
else if (((m_button_style & wxCUSTBUT_FLAT) == 0) || m_focused) // draw raised border
{
dc.SetPen(*wxWHITE_PEN);
dc.DrawLine(0,h-2,0,0); dc.DrawLine(0,0,w-1,0);
dc.SetPen(*wxBLACK_PEN);
dc.DrawLine(w-1,0,w-1,h-1); dc.DrawLine(w-1,h-1,-1,h-1);
dc.SetPen(*wxGREY_PEN);
dc.DrawLine(2,h-2,w-2,h-2); dc.DrawLine(w-2,h-2,w-2,1);
}
dc.SetBackground(wxNullBrush);
dc.SetBrush(wxNullBrush);
dc.SetPen(wxNullPen);
#if (wxMINOR_VERSION<8)
dc.EndDrawing();
#endif
}
示例5: DrawButton
void CLMainAuiTBArt::DrawButton(wxDC& dc, wxWindow* wnd, const wxAuiToolBarItem& item, const wxRect& rect)
{
wxAuiDefaultToolBarArt::DrawButton(dc, wnd, item, rect);
#if 0
// if(!DrawingUtils::IsThemeDark()) {
// wxAuiDefaultToolBarArt::DrawButton(dc, wnd, item, rect);
// return;
// }
int textWidth = 0, textHeight = 0;
if(m_flags & wxAUI_TB_TEXT) {
dc.SetFont(m_font);
int tx, ty;
dc.GetTextExtent(wxT("ABCDHgj"), &tx, &textHeight);
textWidth = 0;
dc.GetTextExtent(item.GetLabel(), &textWidth, &ty);
}
int bmpX = 0, bmpY = 0;
int textX = 0, textY = 0;
if(m_textOrientation == wxAUI_TBTOOL_TEXT_BOTTOM) {
bmpX = rect.x + (rect.width / 2) - (item.GetBitmap().GetWidth() / 2);
bmpY = rect.y + ((rect.height - textHeight) / 2) - (item.GetBitmap().GetHeight() / 2);
textX = rect.x + (rect.width / 2) - (textWidth / 2) + 1;
textY = rect.y + rect.height - textHeight - 1;
} else if(m_textOrientation == wxAUI_TBTOOL_TEXT_RIGHT) {
bmpX = rect.x + 3;
bmpY = rect.y + (rect.height / 2) - (item.GetBitmap().GetHeight() / 2);
textX = bmpX + 3 + item.GetBitmap().GetWidth();
textY = rect.y + (rect.height / 2) - (textHeight / 2);
}
if(!(item.GetState() & wxAUI_BUTTON_STATE_DISABLED)) {
if(item.GetState() & wxAUI_BUTTON_STATE_PRESSED) {
dc.SetPen(wxPen(m_highlightColour));
dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(150)));
dc.DrawRectangle(rect);
} else if((item.GetState() & wxAUI_BUTTON_STATE_HOVER) || item.IsSticky()) {
dc.SetPen(wxPen(m_highlightColour));
dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(170)));
// draw an even lighter background for checked item hovers (since
// the hover background is the same color as the check background)
if(item.GetState() & wxAUI_BUTTON_STATE_CHECKED)
dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(180)));
dc.DrawRectangle(rect);
} else if(item.GetState() & wxAUI_BUTTON_STATE_CHECKED) {
// it's important to put this code in an else statement after the
// hover, otherwise hovers won't draw properly for checked items
dc.SetPen(wxPen(m_highlightColour));
dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(170)));
dc.DrawRectangle(rect);
}
}
wxBitmap bmp;
if(item.GetState() & wxAUI_BUTTON_STATE_DISABLED) {
bmp = CreateDisabledBitmap(item.GetBitmap());
} else
bmp = item.GetBitmap();
if(bmp.IsOk()) dc.DrawBitmap(bmp, bmpX, bmpY, true);
// set the item's text color based on if it is disabled
dc.SetTextForeground(*wxBLACK);
if(item.GetState() & wxAUI_BUTTON_STATE_DISABLED) dc.SetTextForeground(DISABLED_TEXT_COLOR);
if((m_flags & wxAUI_TB_TEXT) && !item.GetLabel().empty()) {
dc.DrawText(item.GetLabel(), textX, textY);
}
#endif
}
示例6: Paint
void wxCustomButton::Paint( wxDC &dc )
{
int w, h;
GetSize(&w,&h);
wxColour foreColour = GetForegroundColour();
wxColour backColour = GetBackgroundColour();
if (m_focused)
{
backColour.Set( wxMin(backColour.Red() + 20, 255),
wxMin(backColour.Green() + 20, 255),
wxMin(backColour.Blue() + 20, 255) );
}
wxBitmap bitmap;
if (IsEnabled())
{
if (GetValue() && m_bmpSelected.Ok())
bitmap = m_bmpSelected;
else if (m_focused && m_bmpFocus.Ok())
bitmap = m_bmpFocus;
else if (m_bmpLabel.Ok())
bitmap = m_bmpLabel;
}
else
{
// try to create disabled if it doesn't exist
if (!m_bmpDisabled.Ok() && m_bmpLabel.Ok())
m_bmpDisabled = CreateBitmapDisabled(m_bmpLabel);
if (m_bmpDisabled.Ok())
bitmap = m_bmpDisabled;
else if (m_bmpLabel.Ok())
bitmap = m_bmpLabel;
foreColour = wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT);
}
#if wxCHECK_VERSION(2, 8, 0)
// wxCONTROL_DISABLED
//flags may have the wxCONTROL_PRESSED, wxCONTROL_CURRENT or wxCONTROL_ISDEFAULT
int ren_flags = 0;
if (GetValue())
ren_flags |= wxCONTROL_PRESSED;
if (m_focused)
ren_flags |= wxCONTROL_CURRENT;
if (!IsEnabled())
ren_flags |= wxCONTROL_DISABLED;
wxRendererNative::Get().DrawPushButton(this, dc, wxRect(0, 0, w, h), ren_flags);
#else
wxBrush brush(backColour, wxSOLID);
dc.SetBackground(brush);
dc.SetBrush(brush);
dc.SetPen(*wxTRANSPARENT_PEN);
dc.DrawRectangle(0, 0, w, h);
#endif // !wxCHECK_VERSION(2, 8, 0)
if (bitmap.Ok())
dc.DrawBitmap(bitmap, m_bitmapPos.x, m_bitmapPos.y, true );
if (!GetLabel().IsEmpty())
{
dc.SetFont(GetFont());
dc.SetTextBackground(backColour);
dc.SetTextForeground(foreColour);
dc.DrawText(GetLabel(), m_labelPos.x, m_labelPos.y);
}
#if !wxCHECK_VERSION(2, 8, 0)
if (GetValue()) // draw sunken border
{
dc.SetPen(*wxGREY_PEN);
dc.DrawLine(0,h-1,0,0); dc.DrawLine(0,0,w,0);
dc.SetPen(*wxWHITE_PEN);
dc.DrawLine(w-1,1,w-1,h-1); dc.DrawLine(w-1,h-1,0,h-1);
dc.SetPen(*wxBLACK_PEN);
dc.DrawLine(1,h-2,1,1); dc.DrawLine(1,1,w-1,1);
}
else if (((m_button_style & wxCUSTBUT_FLAT) == 0) || m_focused) // draw raised border
{
dc.SetPen(*wxWHITE_PEN);
dc.DrawLine(0,h-2,0,0); dc.DrawLine(0,0,w-1,0);
dc.SetPen(*wxBLACK_PEN);
dc.DrawLine(w-1,0,w-1,h-1); dc.DrawLine(w-1,h-1,-1,h-1);
dc.SetPen(*wxGREY_PEN);
dc.DrawLine(2,h-2,w-2,h-2); dc.DrawLine(w-2,h-2,w-2,1);
}
#endif // !wxCHECK_VERSION(2, 8, 0)
dc.SetBackground(wxNullBrush);
dc.SetBrush(wxNullBrush);
//.........这里部分代码省略.........
示例7: DrawGrabber
//
// Draw the grabber
//
void Grabber::DrawGrabber( wxDC & dc )
{
wxRect r = GetRect();
// PaintDC positions are relative to the grabber, not the parent window.
// So use 0,0 as origin for draw, so that the grabber draws right if
// positioned in its parent at some non zero position.
r.SetPosition( wxPoint(0,0) );
int y, left, right, top, bottom;
#ifndef EXPERIMENTAL_THEMING
AColor::Medium(&dc, mOver );
dc.DrawRectangle(r);
// HACK: We used a wider rectangle to also cover one pixel of space just to the right.
if( mAsSpacer )
r.width -= 1;
#else
// Paint the background
if( mOver )
{
AColor::Medium(&dc, mOver );
dc.DrawRectangle(r);
}
else
{
// Get colour from parent...
// when parent colour changes, child colour might not!
wxBrush brush( GetParent()->GetBackgroundColour() );
dc.SetBrush( brush );
dc.DrawRectangle(r);
}
#endif
#ifndef __WXMAC__
// Add a box
r.width -= 1;
r.height -= 1;
AColor::Bevel(dc, !mPressed, r);
r.width += 1;
r.height += 1;
#endif
// No bumps in a spacer grabber.
if( mAsSpacer )
return;
// Calculate the bump rectangle
r.Deflate(3, 3);
if ((r.GetHeight() % 4) < 2) {
r.Offset(0, 1);
}
// Cache
left = r.GetLeft();
right = r.GetRight();
top = r.GetTop();
bottom = r.GetBottom();
// Draw the raised bumps
if (mPressed) {
AColor::Dark(&dc, false);
}
else {
AColor::Light(&dc, false);
}
for (y = top; y < bottom; y += 4) {
AColor::Line(dc, left, y, right, y);
}
// Draw the pushed bumps
if (mPressed) {
AColor::Light(&dc, false);
}
else {
AColor::Dark(&dc, false);
}
for (y = top + 1; y <= bottom; y += 4) {
AColor::Line(dc, left, y, right, y);
}
}
示例8: Draw
void LabelTrack::Draw(wxDC & dc, wxRect & r, double h, double pps,
double sel0, double sel1)
{
double right = h + r.width / pps;
double dsel0 = sel0;
if (dsel0 < h)
dsel0 = h;
if (dsel0 > right)
dsel0 = right;
double dsel1 = sel1;
if (dsel1 < h)
dsel1 = h;
if (dsel1 > right)
dsel1 = right;
wxRect before = r;
before.width = int ((dsel0 - h) * pps);
dc.SetBrush(mUnselectedBrush);
dc.SetPen(mUnselectedPen);
dc.DrawRectangle(before);
wxRect selr = r;
selr.x += before.width;
selr.width = int ((dsel1 - dsel0) * pps);
dc.SetBrush(mSelectedBrush);
dc.SetPen(mSelectedPen);
dc.DrawRectangle(selr);
wxRect after = r;
after.x += (before.width + selr.width);
after.width -= (before.width + selr.width);
if (after.x < r.x) {
after.width -= (r.x - after.x);
after.x = r.x;
}
dc.SetBrush(mUnselectedBrush);
dc.SetPen(mUnselectedPen);
dc.DrawRectangle(after);
dc.SetBrush(mFlagBrush);
dc.SetPen(mFlagPen);
int nextx = 0;
for (int i = 0; i < (int)mLabels.Count(); i++) {
int x = r.x + (int) ((mLabels[i]->t - h) * pps);
int y = r.y;
int height = r.height;
if (x >= r.x && x < r.x + r.width) {
if (x < nextx && i != mSelIndex) {
// Draw flag obscured by the previous label
dc.DrawLine(x, y, x, y + 2);
dc.DrawLine(x, y + height - 2, x, y + height);
mLabels[i]->width = 0;
} else {
// Draw the flag and label
wxPoint tri[3];
tri[0].x = x;
tri[0].y = y;
tri[1].x = x - 8;
tri[1].y = y + 4;
tri[2].x = x;
tri[2].y = y + 8;
if (mSelIndex == i)
dc.SetBrush(*wxWHITE_BRUSH);
dc.DrawPolygon(3, tri);
if (mSelIndex == i)
dc.SetBrush(mFlagBrush);
dc.DrawLine(x, y, x, y + height);
dc.SetTextForeground(wxColour(204, 0, 0));
#ifdef __WXMAC__
long textWidth, textHeight;
#else
int textWidth, textHeight;
#endif
dc.GetTextExtent(mLabels[i]->title, &textWidth, &textHeight);
dc.DrawText(mLabels[i]->title, x + 4, y + 4);
if (i == mSelIndex) {
wxRect outline;
outline.x = x + 2;
outline.y = y + 2;
outline.width = textWidth + 4;
outline.height = height - 4;
dc.SetBrush(*wxTRANSPARENT_BRUSH);
dc.DrawRectangle(outline);
dc.SetBrush(mFlagBrush);
//.........这里部分代码省略.........
示例9: Render
void clRowEntry::Render(wxWindow* win, wxDC& dc, const clColours& c, int row_index, clSearchText* searcher)
{
wxUnusedVar(searcher);
wxRect rowRect = GetItemRect();
bool zebraColouring = (m_tree->HasStyle(wxTR_ROW_LINES) || m_tree->HasStyle(wxDV_ROW_LINES));
bool even_row = ((row_index % 2) == 0);
// Define the clipping region
bool hasHeader = (m_tree->GetHeader() && !m_tree->GetHeader()->empty());
// Not cell related
clColours colours = c;
if(zebraColouring) {
// Set Zebra colouring, only if no user colour was provided for the given line
colours.SetItemBgColour(even_row ? c.GetAlternateColour() : c.GetBgColour());
}
// Override default item bg colour with the user's one
if(GetBgColour().IsOk()) { colours.SetItemBgColour(GetBgColour()); }
wxRect selectionRect = rowRect;
wxPoint deviceOrigin = dc.GetDeviceOrigin();
selectionRect.SetX(-deviceOrigin.x);
if(IsSelected()) {
DrawSimpleSelection(win, dc, selectionRect, colours);
} else if(IsHovered()) {
dc.SetPen(colours.GetHoverBgColour());
dc.SetBrush(colours.GetHoverBgColour());
dc.DrawRectangle(selectionRect);
} else if(colours.GetItemBgColour().IsOk()) {
dc.SetBrush(colours.GetItemBgColour());
dc.SetPen(colours.GetItemBgColour());
dc.DrawRectangle(selectionRect);
}
// Per cell drawings
for(size_t i = 0; i < m_cells.size(); ++i) {
bool last_cell = (i == (m_cells.size() - 1));
colours = c; // reset the colours
wxFont f = clScrolledPanel::GetDefaultFont();
clCellValue& cell = GetColumn(i);
if(cell.GetFont().IsOk()) { f = cell.GetFont(); }
if(cell.GetTextColour().IsOk()) { colours.SetItemTextColour(cell.GetTextColour()); }
if(cell.GetBgColour().IsOk()) { colours.SetItemBgColour(cell.GetBgColour()); }
dc.SetFont(f);
wxColour buttonColour = IsSelected() ? colours.GetSelbuttonColour() : colours.GetButtonColour();
wxRect cellRect = GetCellRect(i);
// We use a helper class to clip the drawings this ensures that if we exit the scope
// the clipping region is restored properly
clClipperHelper clipper(dc);
if(hasHeader) { clipper.Clip(cellRect); }
int textXOffset = cellRect.GetX();
if((i == 0) && !IsListItem()) {
// The expand button is only make sense for the first cell
if(HasChildren()) {
wxRect buttonRect = GetButtonRect();
buttonRect.Deflate(1);
textXOffset += buttonRect.GetWidth();
if(m_tree->IsNativeTheme() && !IS_OSX) {
int flags = wxCONTROL_CURRENT;
if(IsExpanded()) { flags |= wxCONTROL_EXPANDED; }
int button_width = wxSystemSettings::GetMetric(wxSYS_SMALLICON_X);
wxRect modButtonRect = buttonRect;
modButtonRect.SetWidth(button_width);
modButtonRect.SetHeight(button_width);
modButtonRect = modButtonRect.CenterIn(buttonRect);
wxRendererNative::Get().DrawTreeItemButton(win, dc, modButtonRect, flags);
} else {
wxRect buttonRect = GetButtonRect();
if(textXOffset >= cellRect.GetWidth()) {
// if we cant draw the button (off screen etc)
SetRects(GetItemRect(), wxRect());
continue;
}
buttonRect.Deflate((buttonRect.GetWidth() / 3), (buttonRect.GetHeight() / 3));
wxRect tribtn = buttonRect;
dc.SetPen(wxPen(buttonColour, 2));
if(IsExpanded()) {
tribtn.SetHeight(tribtn.GetHeight() - tribtn.GetHeight() / 2);
tribtn = tribtn.CenterIn(buttonRect);
wxPoint middleLeft = wxPoint((tribtn.GetLeft() + tribtn.GetWidth() / 2), tribtn.GetBottom());
dc.DrawLine(tribtn.GetTopLeft(), middleLeft);
dc.DrawLine(tribtn.GetTopRight(), middleLeft);
} else {
tribtn.SetWidth(tribtn.GetWidth() - tribtn.GetWidth() / 2);
tribtn = tribtn.CenterIn(buttonRect);
wxPoint middleLeft = wxPoint(tribtn.GetRight(), (tribtn.GetY() + (tribtn.GetHeight() / 2)));
wxPoint p1 = tribtn.GetTopLeft();
wxPoint p2 = tribtn.GetBottomLeft();
dc.DrawLine(p1, middleLeft);
dc.DrawLine(middleLeft, p2);
}
}
} else {
wxRect buttonRect(rowRect);
buttonRect.SetWidth(rowRect.GetHeight());
buttonRect.Deflate(1);
//.........这里部分代码省略.........
示例10: DrawPricePlot
void MyDayInfoPlot::DrawPricePlot(wxDC&dc){
TotalDayInfoStru MyDays[TOTAY_DAYS_MYDAYINFO];
double MaxSz,MinSz,MaxSh,MinSh,MaxTotal,MinTotal,MaxDelta,MinDelta;
MaxSz=MinSz=MaxSh=MinSh=MaxTotal=MinTotal=MaxDelta=MinDelta=0;
for (int tidx=0;tidx<TOTAY_DAYS_MYDAYINFO;tidx++){
MyDays[tidx].Valid=false;
}
wxString keyPath=WStockConfig::GetMyDayInfoPath();
wxFileName keyf(keyPath);
keyf.MakeAbsolute();
xmlDocPtr doc=NULL;
if (keyf.FileExists()){
//Load Stocks Name From file
doc = xmlParseFile((const char*)keyf.GetFullPath().mb_str());
}
//If Load Fail, Create the Xml Memory
if (doc==NULL){
dc.DrawText(_("No Info File Found!"),10,10);
return;
}
for (xmlNodePtr node=doc->children->children;node;node=node->next){
if (xmlStrcmp(node->name,(const xmlChar*)"DayInfo")==0){
wxString Date(wxConvUTF8.cMB2WC(
(char*)xmlGetProp(node, (const xmlChar*)"Date")),*wxConvCurrent);
wxString Sz(wxConvUTF8.cMB2WC(
(char*)xmlGetProp(node, (const xmlChar*)"ShenZhen")),*wxConvCurrent);
wxString Sh(wxConvUTF8.cMB2WC(
(char*)xmlGetProp(node, (const xmlChar*)"ShangHai")),*wxConvCurrent);
wxString Total(wxConvUTF8.cMB2WC(
(char*)xmlGetProp(node, (const xmlChar*)"Total")),*wxConvCurrent);
wxString Delta(wxConvUTF8.cMB2WC(
(char*)xmlGetProp(node, (const xmlChar*)"TodayEarning")),*wxConvCurrent);
wxDateTime date;
date.ParseDate(Date);
int idx=(wxDateTime::Today()-date).GetDays();
if (idx<TOTAY_DAYS_MYDAYINFO){
Sz.ToDouble(&MyDays[idx].sz);
Sh.ToDouble(&MyDays[idx].sh);
Total.ToDouble(&MyDays[idx].total);
Delta.ToDouble(&MyDays[idx].delta);
MyDays[idx].Valid = true;
MyDays[idx].date = date;
}
}
}
int i;
for (i=0;i<TOTAY_DAYS_MYDAYINFO;i++){
if (MyDays[i].Valid){
if (MyDays[i].sz>MaxSz) MaxSz = MyDays[i].sz;
if (MyDays[i].sz<MinSz) MinSz = MyDays[i].sz;
if (MyDays[i].sh>MaxSh) MaxSh = MyDays[i].sh;
if (MyDays[i].sh<MinSh) MinSh = MyDays[i].sh;
if (MyDays[i].total>MaxTotal) MaxTotal = MyDays[i].total;
if (MyDays[i].total<MinTotal) MinTotal = MyDays[i].total;
if (MyDays[i].delta>MaxDelta) MaxDelta = MyDays[i].delta;
if (MyDays[i].delta<MinDelta) MinDelta = MyDays[i].delta;
}
}
dc.SetPen(wxPen(*wxBLACK,3));
int XStart=100,YStart=10,YFree=60;
int TotalY=dc.GetSize().y-30-YFree;
int XTotal = dc.GetSize().x-110;
float TotalDelta=0;
if (MinDelta<0) TotalDelta = MaxTotal - MinDelta+YFree;
else TotalDelta = MaxTotal+YFree;
if (TotalDelta<0.0003) TotalDelta = 1;
int ZeroY = (int)(double)(TotalY/TotalDelta * MaxTotal + YStart);
dc.DrawLine(XStart,YStart,XStart,YStart + TotalY + YFree);
dc.DrawLine(XStart-10,ZeroY,XStart+XTotal,ZeroY);
for (i=0;i<TOTAY_DAYS_MYDAYINFO;i++){
if (MyDays[i].Valid){
int MyTotalY=(int)(double)(ZeroY - TotalY/TotalDelta * MyDays[i].total);
int MyDeltaY=(int)(double)(ZeroY - TotalY/TotalDelta * MyDays[i].delta);
dc.SetBrush(*wxBLACK_BRUSH);
dc.DrawRectangle(XStart+(i+1)*(XTotal / (TOTAY_DAYS_MYDAYINFO + 1)) - 5,MyTotalY,10,Abs(ZeroY-MyTotalY));
dc.SetBrush(*wxGREEN_BRUSH);
dc.DrawRectangle(XStart+(i+1)*(XTotal / (TOTAY_DAYS_MYDAYINFO + 1)) - 5,MyDeltaY,10,Abs(ZeroY-MyDeltaY));
//wxLogMessage(wxT("Draw Rect at:%d %d %d %d"),(int)(XStart+(i+1)*(XTotal / (TOTAY_DAYS_MYDAYINFO + 1)) - 5),
//MyDeltaY,10,Abs(ZeroY-MyDeltaY));
dc.DrawText(MyDays[i].date.FormatISODate(),XStart+(i+1)*(XTotal / (TOTAY_DAYS_MYDAYINFO + 1))-30,YStart+TotalY);
}
}
}
示例11: Draw
void FillAreaDraw::Draw(wxDC &dc, wxRect rc)
{
dc.SetPen(m_borderPen);
dc.SetBrush(m_fillBrush);
dc.DrawRectangle(rc);
}
示例12: drawit
void TGraphScale::drawit ( wxDC &dc , wxRect &r , wxRect &inner )
{
wxRect ir = CalcInternalRect ( r ) ;
int border = 2 ;
if ( horizontal )
{
if ( ir.x < inner.x ) ir.x = inner.x ;
while ( ir.GetRight() > inner.GetRight() ) ir.width-- ;
outline = ir ;
ir.height -= border*2 ;
ir.y += border ;
}
else
{
if ( ir.y < inner.y ) ir.y = inner.y ;
while ( ir.GetBottom() > inner.GetBottom() ) ir.height-- ;
outline = ir ;
ir.width -= border*2 ;
ir.x += border ;
}
// Selected? Draw nice background!
if ( selected )
{
dc.SetPen ( *MYPEN ( TGraphDisplay::prettyColor ) ) ;
dc.SetBrush ( *MYBRUSH ( TGraphDisplay::prettyColor ) ) ;
dc.DrawRectangle ( outline ) ;
dc.SetBrush ( *wxTRANSPARENT_BRUSH ) ;
}
// Calculate major and minor units
float multiplier = 10 ; //( unit == _T("s") ) ? 6 : 10 ;
float factor = 1 ;
while ( factor <= max ) factor *= multiplier ;
float f2 = top - bottom ;
while ( factor >= f2 ) factor /= multiplier ;
float major = factor ;
float minor = major / 5 ;
// Draw scale
dc.SetFont ( *MYFONT ( 8 , wxMODERN , wxNORMAL , wxNORMAL ) ) ;
dc.SetTextForeground ( col ) ;
dc.SetPen ( *MYPEN ( col ) ) ;
float p = 0 ;
while ( p > bottom ) p -= minor ;
while ( p < bottom ) p += minor ;
if ( p != bottom ) p -= minor ;
while ( p <= top )
{
wxString label ;
/* if ( unit == _T("s") ) label = wxString::Format ( _T("%d:%2d") , p / 60 , ((int)p) % 60 ) ;
else */label = wxString::Format ( _T("%f") , p ) ;
DrawMark ( dc , p , ir , label , ( p - ((int)(p/major))*major ) == 0 ) ;
p += minor ;
}
// Draw "backline" and name/unit
wxString text = name ;
if ( !unit.IsEmpty() ) text += _T(" [") + unit + _T("]") ;
int tw , th ;
dc.GetTextExtent ( text , &tw , &th ) ;
if ( horizontal )
{
if ( left )
{
dc.DrawLine ( ir.x , ir.y , ir.GetRight() , ir.y ) ;
dc.DrawText ( text , ir.x , ir.y ) ;
}
else
{
dc.DrawLine ( ir.x , ir.GetBottom() , ir.GetRight() , ir.GetBottom() ) ;
dc.DrawText ( text , ir.x , ir.GetBottom() - th ) ;
}
if ( show_mark )
{
int c = GetRealCoord ( GetVirtualCoordinate ( mark , inner ) , inner ) ;
dc.SetPen ( *wxRED_PEN ) ;
dc.DrawLine ( c , ir.GetTop() , c , ir.GetBottom() ) ;
}
}
else
{
if ( left )
{
dc.DrawLine ( ir.x , ir.y , ir.x , ir.GetBottom() ) ;
dc.DrawRotatedText ( text , ir.x + 2 , ir.GetBottom() , 90 ) ;
}
else
{
dc.DrawLine ( ir.GetRight() , ir.y , ir.GetRight() , ir.GetBottom() ) ;
dc.DrawRotatedText ( text , ir.GetRight()-th , ir.GetBottom() , 90 ) ;
}
if ( show_mark )
{
int c = GetRealCoord ( GetVirtualCoordinate ( mark , inner ) , inner ) ;
dc.SetPen ( *wxRED_PEN ) ;
dc.DrawLine ( ir.GetLeft() , c , ir.GetRight() , c ) ;
//.........这里部分代码省略.........
示例13: tmpRect
void
clAuiDockArt::DrawCaption(wxDC& dc, wxWindow* window, const wxString& text, const wxRect& rect, wxAuiPaneInfo& pane)
{
wxRect tmpRect(wxPoint(0, 0), rect.GetSize());
// Hackishly prevent assertions on linux
if(tmpRect.GetHeight() == 0) tmpRect.SetHeight(1);
if(tmpRect.GetWidth() == 0) tmpRect.SetWidth(1);
#ifdef __WXOSX__
tmpRect = rect;
window->PrepareDC(dc);
// Prepare the colours
wxColour bgColour, penColour, textColour;
textColour = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
bgColour = DrawingUtils::DarkColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE), 2.0);
; // Same as the notebook background colour
penColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW);
penColour = bgColour;
wxFont f = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
dc.SetFont(f);
dc.SetPen(penColour);
dc.SetBrush(bgColour);
dc.DrawRectangle(tmpRect);
// Fill the caption to look like OSX caption
wxColour topColour("#d3d2d3");
wxColour bottomColour("#e8e8e8");
dc.GradientFillLinear(tmpRect, topColour, bottomColour, wxNORTH);
dc.SetPen(penColour);
dc.SetBrush(*wxTRANSPARENT_BRUSH);
dc.DrawRectangle(tmpRect);
int caption_offset = 0;
if(pane.icon.IsOk()) {
DrawIcon(dc, tmpRect, pane);
caption_offset += pane.icon.GetWidth() + 3;
} else {
caption_offset = 3;
}
dc.SetTextForeground(textColour);
wxCoord w, h;
dc.GetTextExtent(wxT("ABCDEFHXfgkj"), &w, &h);
wxRect clip_rect = tmpRect;
clip_rect.width -= 3; // text offset
clip_rect.width -= 2; // button padding
if(pane.HasCloseButton()) clip_rect.width -= m_buttonSize;
if(pane.HasPinButton()) clip_rect.width -= m_buttonSize;
if(pane.HasMaximizeButton()) clip_rect.width -= m_buttonSize;
wxString draw_text = wxAuiChopText(dc, text, clip_rect.width);
wxSize textSize = dc.GetTextExtent(draw_text);
dc.SetTextForeground(textColour);
dc.DrawText(draw_text, tmpRect.x + 3 + caption_offset, tmpRect.y + ((tmpRect.height - textSize.y) / 2));
#else
wxBitmap bmp(tmpRect.GetSize());
{
wxMemoryDC memDc;
memDc.SelectObject(bmp);
wxGCDC gdc;
wxDC* pDC = NULL;
if(!DrawingUtils::GetGCDC(memDc, gdc)) {
pDC = &memDc;
} else {
pDC = &gdc;
}
// Prepare the colours
wxColour bgColour, penColour, textColour;
textColour = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
bgColour = DrawingUtils::DarkColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE), 2.0);
; // Same as the notebook background colour
penColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW);
penColour = bgColour;
wxFont f = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
pDC->SetFont(f);
pDC->SetPen(penColour);
pDC->SetBrush(bgColour);
pDC->DrawRectangle(tmpRect);
pDC->SetPen(penColour);
pDC->SetBrush(*wxTRANSPARENT_BRUSH);
pDC->DrawRectangle(tmpRect);
int caption_offset = 0;
if(pane.icon.IsOk()) {
DrawIcon(gdc, tmpRect, pane);
caption_offset += pane.icon.GetWidth() + 3;
} else {
caption_offset = 3;
}
pDC->SetTextForeground(textColour);
wxCoord w, h;
pDC->GetTextExtent(wxT("ABCDEFHXfgkj"), &w, &h);
//.........这里部分代码省略.........
示例14: FillRectangle
void SurfaceImpl::FillRectangle(PRectangle rc, ColourAllocated back) {
BrushColour(back);
hdc->SetPen(*wxTRANSPARENT_PEN);
hdc->DrawRectangle(wxRectFromPRectangle(rc));
}
示例15: DrawFore
void CParameter::DrawFore(wxDC& dc, wxRect& rc)
{
m_iSamplesPerPixel = m_pTracks->GetSamplesPerPixel();
if(m_fMax == 0.f)
return;
m_fScale = (float)rc.GetHeight() / (float)(m_fMax - m_fMin);
int start = m_pRegion->GetStartPos();
int end = m_pRegion->GetEndPos();
int offset = m_pRegion->GetStartOffset();
int top = rc.GetTop();
int bottom = rc.GetTop() + rc.GetHeight();
int left = rc.GetX() + 1;
int right = left + rc.GetWidth() - 1;
float value = 0.f;
int prevX = left;
int prevY = bottom;
int pos = m_bAfterTrack ? 0 : start;
bool bLoaded = false;
bool bDrawCircle = true;
if(!m_pInput->GetParamAt(pos, m_index, &value))
{
pos = m_pInput->GetPrevOffset(pos);
bDrawCircle = false;
}
else
bLoaded = true;
wxPen oldpen = dc.GetPen();
wxColor color = m_color;
if( IsSelected() )
color.Set(255-color.Red(), 255-color.Green(), 255-color.Blue());
dc.SetPen( wxPen(color) );
do {
if(m_pInput->GetParamAt(pos, m_index, &value))
{
bLoaded = true;
int x = pos;
int y = (int)((float)bottom - (value * m_fScale));
if(y>top && y<bottom)
{
if(m_bAfterTrack && offset>=0)
x += start - offset;
x /= m_iSamplesPerPixel;
if(x <= left)
prevX = left;
else if(x >= right)
y = prevY;
else
{
dc.DrawLine(prevX, prevY, x, prevY); // Horizontal line
dc.DrawLine(x, prevY, x, y); // Vertical line
if( bDrawCircle )
{
if(m_pSelectedPoint &&
m_pSelectedPoint->m_offset==pos &&
m_pSelectedPoint->m_value==value)
{
dc.DrawRectangle(x-3, y-3, 6, 6); // Selected parameter
}
else
dc.DrawCircle(x, y, 3); // Parameter
}
prevX = x;
}
bDrawCircle = true;
prevY = y;
}
}
pos = m_pInput->GetNextOffset(pos);
} while ( pos>0 && pos<end && prevX<right );
if(bLoaded && prevX<right) // there have been parameters!
dc.DrawLine(prevX, prevY, right, prevY);
dc.SetPen(oldpen);
}