Google Chrome style tabs on glass w Delphi
Próbuję zaimplementować karty Google Chrome style, w Windows 7, w aplikacji Delphi.
Elementami tego są:
- karty mogą rozciągać się w obszarze innym niż klient, tak jak w samej przeglądarce Google chrome.
- rysuje poprawnie Na Vista i Windows 7, gdy szkło jest włączone
- karty działają jak google chrome i wyglądają jak Google chrome, nad szkłem.
Odkryłem, że wyzwania, które muszę pokonać są:
- Jak uzyskać kontrolę (VCL control), aby rozszerzyć się na obszar spoza klienta? (Dobrą próbką kontrolki, która to robi, jest kontrolka wstążki zawarta w źródłach VCL, ale nie widziałem, aby ktoś inny to robił, i potrzeba jakiegoś niegodziwego hakowania, aby wstążka działała) {]}
- Jak prawidłowo rysować bitmapy nad szkłem? (DWM API). Podobne pytanie już odpowiada na ten aspekt, tutaj to pytanie zostało również zadane przeze mnie.
4 answers
Nie chcesz pełnego szklanego okna, ale będziesz musiał narysować zakładki samodzielnie, ponieważ nie ma kontroli, której jestem świadomy, która da ci dokładny wygląd, którego szukasz. Jeśli używasz właściwości GlassFrame bieżącego formularza, włącz go i ustaw górę na wysokość, którą chcesz dla kart, upuść paintbox na tym obszarze i użyj wywołań GDI+, aby ręcznie narysować karty. Dobra biblioteka, która powinna działać w tym celu, jest dostępna w EDN ( http://cc.embarcadero.com/Download.aspx?id=26950). bez użycia GDI+ będziesz mógł rysować na pudełku, ale czarny stanie się przezroczysty. Dzięki GDI+ możesz dowolnie rysować na szkle w dowolnym kolorze. Na przykład:
Źródło:
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, GdiPlusHelpers, GdiPlus, StdCtrls, ExtCtrls;
type
TForm6 = class(TForm)
pb1: TPaintBox;
procedure pb1Paint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
{$R *.dfm}
procedure TForm6.pb1Paint(Sender: TObject);
var
Graphics : IGPGraphics;
Brush: IGPSolidBrush;
FontFamily: IGPFontFamily;
Font: IGPFont;
Point: TGPPointF;
Pen: IGPPen;
begin
Graphics := Pb1.ToGPGraphics;
Brush := TGPSolidBrush.Create(TGPColor.Create(255, 0, 0, 0));
FontFamily := TGPFontFamily.Create('Consolas');
Font := TGPFont.Create(FontFamily, 12, FontStyleRegular, UnitPoint);
Point.Initialize(1, 0);
Graphics.TextRenderingHint := TextRenderingHintAntiAlias;
Graphics.DrawString('GDI+ Black Text', Font, Point, Brush);
Pen := TGPPen.Create(TGPColor.Create(255, 0, 0, 0));
Graphics.DrawLine(Pen, 0, 0, 200, 100);
end;
end.
Forma:
object Form6: TForm6
Left = 0
Top = 0
Caption = 'Form6'
ClientHeight = 282
ClientWidth = 418
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
GlassFrame.Enabled = True
GlassFrame.Top = 22
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object pb1: TPaintBox
Left = 0
Top = 0
Width = 313
Height = 105
OnPaint = pb1Paint
end
end
Edytuj Zaktualizowano do anty-aliasu tekst, aby wyglądał lepiej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-13 17:24:20
Właśnie ukończyłem całkiem kompletną implementację Chrome Tabs dla Delphi.
Funkcje obejmują:
- w pełni konfigurowalny wygląd, w tym gradienty, przezroczystości i niestandardowe kształty kart
- Karty mogą być malowane na pasku tytułowym podczas korzystania z Aero
- działa na Vista glass
- animacja ruchu tabulatora
- Tab transitional style effects (fade between colours and alpha level)
- przeciągnij i upuść wewnątrz kontenera i między pojemnikami
- przeciągnij obrazek wyświetla zakładkę I dowolny TWinControl
- zmiana rozmiaru inteligentnej Zakładki po kliknięciu przycisku Zamknij
- Zmiana rozmiaru karty płynu z minimalnymi i maksymalnymi rozmiarami kart
- przycisk Dodaj zakładkę może być umieszczony po lewej, prawej lub unoszącej się w prawo
- w pełni funkcjonalne przewijanie, w tym automatyczne przewijanie podczas przeciągania
- wyświetlanie zawartości Kart Inteligentnych ukrywa / pokazuje elementy w zależności od szerokości kart
- właściciel narysuj dowolny element
- od prawej do lewej tekst
- przypięte zakładki
- Tab spinners - zarówno renderowane, jak i Bitmapowe.
- zmodyfikowane karty z animowanym blaskiem
- obrazy tabulacji i nakładki
- Mouse over glow
- wiele wydarzeń
- load/save look and feel oraz options to stream/file
- Wygeneruj wygląd/opcje kodu Delphi
Możesz pobrać źródło i pełne demo / edytor tutaj: http://code.google.com/p/delphi-chrome-tabs/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-10 21:38:14
Znalezione znacznie później, z elementów Klever:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-04 02:08:54
Malowanie w podpisie szklistej formy wyjaśnione tutaj: http://delphihaven.wordpress.com/2010/04/22/setting-up-a-custom-title-bar-reprise/ Możesz również zajrzeć do źródeł wstążek delphi.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-13 09:52:47