void CheckButton::OnRender(suic::DrawingContext * drawing) { if (GetStyle()) { // // 先绘制背景 // suic::Rect drawrect(0, 0, RenderSize().cx, RenderSize().cy); suic::ImageBrushPtr bkgnd(suic::Render::GetProperty(this, GetStyle().get(), InternalBackgrount())); if (bkgnd) { suic::Rect rectBk = bkgnd->GetContentBrounds(); drawrect.right = drawrect.left + rectBk.Width(); drawrect.top += (drawrect.Height() - rectBk.Height()) / 2; drawrect.bottom = drawrect.top + rectBk.Height(); bkgnd->Draw(drawing, &drawrect); } // // 绘制文字 // drawrect.top = 0; drawrect.bottom = RenderSize().cy; drawrect.left = drawrect.right + GetPadding().left; drawrect.right = RenderSize().cx; suic::Render::RenderText(drawing, this, GetText(), &drawrect, true); } }
void ComboBox::OnRender(suic::DrawingContext * drawing) { suic::StylePtr styleArrow = FindResource(_T("ComboBox.Down")); suic::Point pt; suic::Rect drawrect(pt.x, pt.y, RenderSize().cx, RenderSize().cy); // // 先绘制背景 // if (GetBackground()) { GetBackground()->Draw(drawing, &drawrect); } // 获取下拉箭头的设置 if (styleArrow.get()) { suic::BrushPtr bkgnd(suic::Render::GetProperty(this, styleArrow.get(), _T("Background"))); if (bkgnd) { suic::Rect downRect = drawrect; downRect.Deflate(GetBorderThickness()); downRect.left = downRect.right - 16; bkgnd->Draw(drawing, &downRect); } } suic::Render::RenderBorder(drawing, this, &drawrect); }
void ThumbButton::OnRender(suic::DrawingContext * drawing) { // 先绘制背景 __super::OnRender(drawing); suic::TriggerPtr trg(suic::UIRender::GetTriggerByStatus(this, GetStyle())); suic::ImageBrushPtr bkgnd = trg->GetValue(_T("Glyph")); if (bkgnd) { suic::Rect rect = bkgnd->GetContentBrounds(); suic::Rect rc; if (rect.Width() <= RenderSize().cx && rect.Height() <= RenderSize().cy) { rc.left = (RenderSize().cx - rect.Width()) / 2; rc.right = rc.left + rect.Width(); rc.top = (RenderSize().cy - rect.Height()) / 2; rc.bottom = rc.top + rect.Height(); bkgnd->Draw(drawing, &rc); } } }
void ScrollBar::OnHorzTrack(suic::Element* pSender, suic::MouseEventArg& e) { if (!_rcTrack.Empty()) { int iMin = 0; suic::Point ptWindow = e.MousePoint(); suic::Point ptSelf = PointToScreen(suic::Point()); suic::Rect rect(ptSelf.x, ptSelf.y, RenderSize().cx, RenderSize().cy); suic::Size szClamp(0, 0); int nThumbLength = 0; szClamp.cx = rect.left + (_decreaseBtn.IsVisible() ? (int)_decreaseBtn.GetWidth() : 0); szClamp.cy = rect.right - (_increaseBtn.IsVisible() ? (int)_increaseBtn.GetWidth() : 0); nThumbLength = _rcTrackStart.Width(); szClamp.cy -= nThumbLength; suic::Point ptOffset(ptWindow.x - _ptTrackStart.x, ptWindow.y - _ptTrackStart.y); suic::Rect rectNew(_rcTrackStart); if (abs(ptOffset.y) < 150) { rectNew.Offset(ptOffset.x, 0); if (rectNew.left < szClamp.cx) { rectNew.left = szClamp.cx; rectNew.right = rectNew.left + nThumbLength; } else if (szClamp.cy < rectNew.left) { rectNew.left = szClamp.cy; rectNew.right = rectNew.left + nThumbLength; } } if (!rectNew.Equal(&_rcTrack)) { _rcTrack = rectNew; int nPosNew = PosFromThumb(_rcTrack.left - szClamp.cx, szClamp); if (_scroInfo.iVisualPos != nPosNew) { _scroInfo.iVisualPos = nPosNew; DoScroll(true); } } } }
void OnRender(suic::DrawingContext * drawing) { suic::Rect rect(0, 0, RenderSize().cx, RenderSize().cy); if (_expanded) { if (_bCollapsed) { _expanded->Draw(drawing, &rect); } else { _collapsed->Draw(drawing, &rect); } } }
void Slider::HandleVertical(int pos) { suic::Rect rcItem(0, 0, RenderSize().cx, RenderSize().cy); const suic::Size& thumbSize = _thumbBtn->GetDesiredSize(); if (pos <= rcItem.top ) { SetValue(Minimum()); } else if (pos >= rcItem.bottom - thumbSize.cy) { SetValue(Maximum()); } else { SetValue(Minimum() + (Maximum() - Minimum()) * (double)(pos) / (double)(rcItem.Height() - thumbSize.cy)); } }
void Slider::HandleHorizontal(int pos) { suic::Rect rcItem(0, 0, RenderSize().cx, RenderSize().cy); const suic::Size& thumbSize = _thumbBtn->GetDesiredSize(); if (pos >= rcItem.right - thumbSize.cx) { SetValue(Maximum()); } else if (pos <= rcItem.left) { SetValue(Minimum()); } else { SetValue(Minimum() + (Maximum() - Minimum()) * (double)(pos) / (double)(rcItem.Width() - thumbSize.cx)); } }
void WebBrowser::OnVisibilityChanged(bool visible) { suic::Point point = PointToScreen(suic::Point()); suic::Rect rect(point.x, point.y, RenderSize().cx, RenderSize().cy); WebWrapper* pWeb = (WebWrapper*)_webHost; if (visible) { pWeb->SetWebRect(&rect); } else { suic::Rect rc; pWeb->SetWebRect(&rc); } }
void AnimateBox::OnRender(suic::DrawingContext * drawing) { suic::ImagePtr img = CurrentFrame(); int flag = 2; suic::FrameworkElement::OnRender(drawing); if (_frames.size() > 1) { suic::Rect rc(0, 0, RenderSize().cx, RenderSize().cy); flag = _frames[_curframe].flag; // 先恢复背景色 if (flag == 2) { //drawing->FillRectangle(rc, _bkcolor); } // // 如果需要,绘制前一帧 // //if (_frame) // //{ // // suic::Rect rcim(0, 0, _frame->Width(), _frame->Height()); // // drawing->DrawImage(_frame.get(), &rc, &rcim, CurrentTransparent()); // // _frame = NULL; // //} // //// 需要保留上一帧 // if (flag == 3) // { // _frame = img; // } } if (img) { suic::Rect rect(0, 0, RenderSize().cx, RenderSize().cy); suic::Rect rcimg(0, 0, img->Width(), img->Height()); drawing->DrawImage(img.get(), &rect, &rcimg, CurrentTransparent()); } }
void ScrollBar::UpdateScrollInfo(int iVisual, int iLogic, bool bCalc) { _iVisualSize = iVisual; _iLogicSize = iLogic; CalcScrollPos(); if (bCalc) { GetScrollThumbRect(RenderSize()); } }
void ScrollBar::OnBeginTrack(suic::Element* pSender, suic::MouseEventArg& e) { suic::Point pt = PointToScreen(suic::Point()); _rcTrackStart = GetScrollThumbRect(RenderSize(), false); _rcTrackStart.Offset(pt.x, pt.y); _rcTrack = _rcTrackStart; _scroInfo._iTrackPos = _scroInfo.iVisualPos; _ptTrackStart = e.MousePoint(); }
void ProgressBar::OnRender(suic::DrawingContext * drawing) { // 先绘制背景 suic::Rect elemrect(0, 0, RenderSize().cx, RenderSize().cy); suic::TriggerPtr trg(suic::UIRender::GetTriggerByStatus(this, GetStyle())); suic::UIRender::DrawBackground(drawing, trg, &elemrect); // // 绘制进度条状态 // suic::ImageBrushPtr bkgnd(trg->GetValue(_T("Thumb"))); if (bkgnd) { suic::Rect rcdraw(elemrect); // 水平 if (GetOrientation() == CoreFlags::Horizontal) { LONG iOff = (LONG)((GetValue() - Minimum()) * (double)(rcdraw.right - rcdraw.left) / (Maximum() - Minimum())); rcdraw.right = rcdraw.left + iOff; } else { LONG iOff = (LONG)((double)(rcdraw.bottom - rcdraw.top) * (GetValue() - Minimum()) / (Maximum() - Minimum())); rcdraw.top = rcdraw.bottom - iOff; } if (!rcdraw.Empty()) { bkgnd->Draw(drawing, &rcdraw); } } suic::UIRender::DrawText(drawing, GetText(), trg, &elemrect , GetHorizontalContentAlignment(), GetVerticalContentAlignment()); }
void TextBlock::OnRender(suic::DrawingContext * drawing) { suic::Rect elemrect(0, 0, RenderSize().cx, RenderSize().cy); // 绘制背景 //suic::UIRender::DrawBackground(drawing, GetStyle()->GetTrigger(), &elemrect); elemrect.Deflate(GetPadding()); suic::UIRender::DrawText(drawing, GetText() , GetStyle()->GetTrigger(), &elemrect , GetHorizontalContentAlignment(), GetVerticalContentAlignment()); // // 如果拥有焦点则绘制焦点虚线 // if (IsFocused()) { suic::Rect rect(0, 0, RenderSize().cx, RenderSize().cy); rect.Deflate(GetBorderThickness()); drawing->DrawFocused(&rect); } }
void ComboBox::OnMouseLeftButtonDown(suic::MouseEventArg& e) { __super::OnMouseLeftButtonDown(e); if (_popup->IsValid()) { _popup->Close(); } else { suic::Point point = suic::SystemHelper::CalcScreenElementPoint(this, CoreFlags::eLeftBottom); suic::Size availableSize; int iWid = RenderSize().cx; _list->Measure(availableSize); _popup->SetWidth(iWid); if (_list->GetDesiredSize().cy > _downHeight || _list->GetDesiredSize().cy <= 16) { _popup->SetHeight(_downHeight); } else { int iHei = _list->GetDesiredSize().cy + _list->GetBorderThickness().top + _list->GetBorderThickness().bottom; _popup->SetHeight(iHei); } _popup->SetOwner(this); _popup->SetPopupRoot(_list.get()); DropDownEventArg eo(_popup, _list); OnDropDownOpened(eo); _popup->TrackingPopup(point.x, point.y, false, 0, 0, new ComboListHookPopup(_popup)); suic::ObjectPtr selObj = _list->SelectedItem(); _list->UnselectAllItems(); OnDropDownClosed(eo); } }
void TreeViewItem::OnMouseLeftButtonDown(suic::MouseEventArg& e) { suic::Element::OnMouseLeftButtonDown(e); suic::ElementPtr pHeader = suic::ElementPtr::cast(GetHeader()); if (!e.IsHandled()) { suic::Rect rect = suic::VisualHelper::GetRenderRect(pHeader); e.SetHandled(true); rect.left = 0; rect.right = RenderSize().cx; if (rect.PointIn(e.MousePoint())) { Select(); } } }
void TreeViewItem::OnRender(suic::DrawingContext * drawing) { suic::Rect rect(0, 0, RenderSize().cx, _headerHost->RenderSize().cy); suic::BrushPtr bkgnd; if (IsFocused() || ReadFlag(CoreFlags::IsSelected)) { if (GetStyle()->GetTrigger(_T("IsFocused"))) { bkgnd = GetStyle()->GetTrigger(_T("IsFocused"))->GetValue(_T("Background")); } } else if (_headerHost->IsMouseOver() && GetStyle()->GetTrigger(_T("IsMouseOver"))) { bkgnd = GetStyle()->GetTrigger(_T("IsMouseOver"))->GetValue(_T("Background")); } if (bkgnd) { bkgnd->Draw(drawing, &rect); } }
void Slider::OnRender(suic::DrawingContext * drawing) { // 先绘制背景 suic::Rect rcdraw(0, 0, RenderSize().cx, RenderSize().cy); suic::TriggerPtr trg(GetStyle()->GetTrigger()); suic::ImageBrushPtr bkgnd(trg->GetValue(suic::BACKGROUND)); if (!bkgnd) { if (GetOrientation() == CoreFlags::Horizontal) { rcdraw.top = (RenderSize().cy - GetDesiredSize().cy) / 2; rcdraw.bottom = rcdraw.top + GetDesiredSize().cy; } else { rcdraw.left = (RenderSize().cx - GetDesiredSize().cx) / 2; rcdraw.right = rcdraw.left + GetDesiredSize().cx; } suic::UIRender::DrawBackground(drawing, trg, &rcdraw); } else { suic::Rect rect = bkgnd->GetContentBrounds(); if (GetOrientation() == CoreFlags::Horizontal) { rcdraw.top = (RenderSize().cy - rect.Height()) / 2; rcdraw.bottom = rcdraw.top + rect.Height(); } else { rcdraw.left = (RenderSize().cx - rect.Width()) / 2; rcdraw.right = rcdraw.left + rect.Width(); } bkgnd->Draw(drawing, &rcdraw); } }
void TabControl::OnRender(suic::DrawingContext * drawing) { suic::Rect rect(0, _headerHeight, RenderSize().cx, RenderSize().cy - _headerHeight); suic::UIRender::DrawBackground(drawing, GetStyle()->GetTrigger(), &rect); }