private void SetStartPositions(List <NativeItemData> nid) { int c = 0; StartPositions.Clear(); if (ItemCount == 0) { _ActiveListHeight = 0; _ActiveListWidth = 0; return; } var hdcMem = OffScreenGraphics.GetHdc(); try { using (Gdi g = Gdi.FromHdc(hdcMem, Rectangle.Empty)) { g.Font = Settings.SecondaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; for (int i = 0; i < ItemCount; i++) { StartPositions.Add(c); //nid[i].SecondaryTextLines = TextFormatHelper.CutTextToLines(nid[i].SecondaryText, Width - UISettings.CalcPix(40), 0, g); nid[i].SecondaryTextLines = TextFormatHelper.CutTextToLines(nid[i].SecondaryText, Width - UISettings.CalcPix(29), Settings.SecondaryTextLinesCount, g); //SecondaryTextLinesCount c += (Settings.ListItemPixSize + (nid[i].SecondaryTextLines.Count + 1) * UISettings.CalcPix(11)); if (ShowGroupHeader) { //if (IsItemNewGroup(nItem) && item.Group != null && rItem.Top >= rListRect.Top) if (IsItemNewGroup(i) && nid[i].Group != null) { c += Settings.GroupPixHeight; } } //c += Settings.ListItemPixSize; } } } finally { OffScreenGraphics.ReleaseHdc(hdcMem); } StartPositions.Add(c); //The end of tha last item _ActiveListHeight = c; ScrollTo(0); }
protected override List <NativeItemData> BuildNativeControlItems() { var newListData = new List <NativeItemData>(Items.Count); if (Items != null) { var hdcMem = OffScreenGraphics.GetHdc(); try { using (Gdi g = Gdi.FromHdc(hdcMem, Rectangle.Empty)) { g.Font = Settings.SecondaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; for (int i = 0; i < Items.Count; i++) { string photo = string.Empty; if (Items[i].IsPhotoLoaded) { photo = Items[i].Photo; } else { photo = "clear"; } NativeItemData newNativeItemData = new KineticListView <PhotoCommentsUpdatesViewItem> .NativeItemData { Uid = Items[i].Uid, Group = Items[i].Group, PrimaryText = Items[i].SenderName, SecondaryText = Items[i].Comment, TertiaryText = Items[i].CommentSetDate.ToString("HH:mm"), SecondaryTextLines = TextFormatHelper.CutTextToLines(Items[i].Comment, UISettings.CalcPix(170), 2, g), PrimaryImageURL = photo, InfoLeftIndents = new int[3], InfoTopIndents = new int[2] }; newListData.Add(newNativeItemData); } } } finally { OffScreenGraphics.ReleaseHdc(hdcMem); } } return(newListData); }
protected override List <NativeItemData> BuildNativeControlItems() { var newListData = new List <NativeItemData>(Items.Count); if (Items != null) { for (int i = 0; i < Items.Count; i++) { List <string> secondaryTextLines = new List <string>(); var hdcMem = OffScreenGraphics.GetHdc(); try { using (Gdi g = Gdi.FromHdc(hdcMem, Rectangle.Empty)) { g.Font = Settings.SecondaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; secondaryTextLines = TextFormatHelper.CutTextToLines(Items[i].MessageText, UISettings.CalcPix(192), 2, g); } } finally { OffScreenGraphics.ReleaseHdc(hdcMem); } NativeItemDataNew newNativeItemData = new NativeItemDataNew { Uid = Items[i].Uid, PrimaryText = Items[i].UserName, SecondaryText = Items[i].MessageText, TertiaryText = Items[i].MessageWroteDateString, SecondaryTextLines = secondaryTextLines, IsItemHighlight = Items[i].IsMessageNew, IsOutboxIconSet = Items[i].IsMessageOutbox, Tag = Items[i].UserID, PrimaryImage = null,//MasterForm.SkinManager.GetImage("IsOutputMessage"), InfoLeftIndents = new int[5], InfoTopIndents = new int[3] }; newListData.Add(newNativeItemData); } } return(newListData); }
public void DrawRender(Gdi g) { Rectangle rect = new Rectangle(0, 0, Width, Height); IntPtr hdcMem = OffScreenGraphics.GetHdc(); using (Gdi gMem = Gdi.FromHdc(hdcMem, Rectangle.Empty)) { DrawScreenOn(gMem, rect, _currentScrollPosition); g.BitBlt(Location.X, Location.Y, rect.Width, rect.Height, gMem, 0, 0, TernaryRasterOperations.SRCCOPY); } OffScreenGraphics.ReleaseHdc(hdcMem); }
protected bool OnPaint(IntPtr hWnd) { var ps = new Win32.PAINTSTRUCT(); if (OffScreenGraphics == null) { return(false); } var hdc = Win32.BeginPaint(hWnd, ref ps); var hdcMem = OffScreenGraphics.GetHdc(); try { using (Gdi g = Gdi.FromHdc(hdc, ps.rcPaint)) { using (Gdi gMem = Gdi.FromHdc(hdcMem, Rectangle.Empty)) { Rectangle rect = ps.rcPaint; try { DrawScreenOn(gMem, rect, _currentScrollPosition); } catch (COMException ex) { throw; } catch (Exception) { throw; } g.BitBlt(rect.Left, rect.Top, rect.Right - rect.Left, rect.Bottom - rect.Top, gMem, rect.Left, rect.Top, TernaryRasterOperations.SRCCOPY); } } } finally { OffScreenGraphics.ReleaseHdc(hdcMem); Win32.EndPaint(hWnd, ref ps); } return(true); }
private void SetStartPositions(List <NativeItemData> nid) { int c = 0; StartPositions.Clear(); if (ItemCount == 0) { _ActiveListHeight = 0; return; } var hdcMem = OffScreenGraphics.GetHdc(); int lastHeight = 0; try { using (Gdi g = Gdi.FromHdc(hdcMem, Rectangle.Empty)) { g.Font = Settings.SecondaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; // для текста в каждой ячейке for (int i = 0; i < ItemCount; i++) { StartPositions.Add(c); nid[i].SecondaryTextLines = TextFormatHelper.CutTextToLines(nid[i].SecondaryText, UISettings.CalcPix(200), 0, g); c += (Settings.ListItemPixSize + (nid[i].SecondaryTextLines.Count + 1) * UISettings.CalcPix(11)); } StartPositions.Add(c); } } finally { OffScreenGraphics.ReleaseHdc(hdcMem); } _ActiveListHeight = c; }
private void SetStartPositions(List <NativeItemData> nid) { int c = 0; StartPositions.Clear(); if (ItemCount == 0) { _ActiveListHeight = 0; return; } var hdcMem = OffScreenGraphics.GetHdc(); try { using (Gdi g = Gdi.FromHdc(hdcMem, Rectangle.Empty)) { g.Font = Settings.SecondaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; // для текста в каждой ячейке for (int i = 0; i < ItemCount; i++) { StartPositions.Add(c); // есть заголовок группы? if (IsItemNewGroup(i) && !string.IsNullOrEmpty(nid[i].Group)) { c += Settings.GroupPixHeight; } // что выводим? switch (Items[i].Type) { case ImageDetailedListViewItemType.Author: // ячейка "автор" c += UISettings.CalcPix(25); break; case ImageDetailedListViewItemType.Comment: // ячейка "комментарий" nid[i].SecondaryTextLines = TextFormatHelper.CutTextToLines(nid[i].SecondaryText, Width - UISettings.CalcPix(10), 0, g); c += (Settings.ListItemPixSize + (nid[i].SecondaryTextLines.Count + 1) * UISettings.CalcPix(11)); break; case ImageDetailedListViewItemType.Photo: if (Items[i].IsPhotoLoaded) { c += Items[i].PhotoHeight; } else { c += UISettings.CalcPix(50); } break; } } } } finally { OffScreenGraphics.ReleaseHdc(hdcMem); } StartPositions.Add(c); _ActiveListHeight = c; ScrollTo(0); }