掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
XPスタイルで色設定 (ID:37427)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ピンクのボタンさんありがとうがおざいます。 試してみましたが、当方の環境がDelphi7のため GradientFillCanvasが使えません。 Webで調べた所、代用になりそうな物を見つけましたが (下のコードです。) 今度は、 arTVX[0].Red := $7800; の所で定数式が範囲を超えましたのエラーがでます。 なぜでしょうか。 よろしくお願いします。 type TGradientDirection = (gdHorizontal, gdVertical); procedure GradientFillCanvas(Canvas: TCanvas; StartColor, EndColor: TColor; const ARect: TRect; Direction: TGradientDirection); const cGradientDirections: array[TGradientDirection] of Cardinal = (GRADIENT_FILL_RECT_H, GRADIENT_FILL_RECT_V); type TTriVertex = packed record X,Y :LongInt; Red,Green,Blue,Alpha: Word; end; var Vertexes: array[0..1] of TTriVertex; GradientRect: TGradientRect; begin StartColor:=ColorToRGB(StartColor); EndColor:=ColorToRGB(EndColor); Vertexes[0].X:=ARect.Left; Vertexes[0].Y:=ARect.Top; Vertexes[0].Red:=GetRValue(StartColor) shl 8; Vertexes[0].Blue:=GetBValue(StartColor) shl 8; Vertexes[0].Green:=GetGValue(StartColor) shl 8; Vertexes[0].Alpha:=0; Vertexes[1].X:=ARect.Right; Vertexes[1].Y:=ARect.Bottom; Vertexes[1].Red:=GetRValue(EndColor) shl 8; Vertexes[1].Blue:=GetBValue(EndColor) shl 8; Vertexes[1].Green:=GetGValue(EndColor) shl 8; Vertexes[1].Alpha:=0; GradientRect.UpperLeft:=0; GradientRect.LowerRight:=1; GradientFill(Canvas.Handle, Windows.PTriVertex(@Vertexes[0])^, 2, @GradientRect, 1, cGradientDirections[Direction]); end; procedure TForm1.FormPaint(Sender: TObject); var arTVX : array[0..1] of TRIVERTEX; GradRect: GRADIENT_RECT; begin arTVX[0].X := 0; arTVX[0].Y := 0; arTVX[0].Red := $7800; arTVX[0].Green := $B900; arTVX[0].Blue := $D900; arTVX[0].Alpha := $0000; arTVX[1].X := Width; arTVX[1].Y := Height; arTVX[1].Red := $FF00; arTVX[1].Green := $FF00; arTVX[1].Blue := $FF00; arTVX[1].Alpha := $0000; GradRect.UpperLeft := 0; GradRect.LowerRight := 1; GradientFill(Canvas.Handle, @arTVX, 2, @GradRect, 1, GRADIENT_FILL_RECT_H); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.