Відповідь на питання № 78056

GDI, малювання на канві | Друк графіки та складного тексту, масштабування |

Привіт шановні жителі королівства. Підкажіть будь ласка як вирішити таку проблему: при друку прямокутника або іншої фігури з Brush.Style = bsCross або іншим видом решітки друкує грати на чорному тлі, а мені дуже потрібно на білому, а краще прозорому.
Ось приклад коду при якому виводить прямокутник на чорному тлі, точніше 2 прямокутника:

Printer.BeginDoc;
with Printer.Canvas do
begin
Brush.Style: = bsSolid;
Brush.Color: = clWhite;
FillRect (ClientRect);
Brush.Color: = clGreen;
Brush.Style: = bsDiagCross;
FillRect (Rect (100. 100. 500. 500));
Rectangle (600. 100. 1000. 500);
end;
Printer.EndDoc;


Обидва прямокутника при друку вийшли чорними з ледь помітною світлою гратами.

Відстежувати відповіді на це питання по RSS

procedure TForm3.FormClick (Sender: TObject);
var
I, Y: Integer;
Bitmap: TBitmap;
begin
Bitmap: = TBitmap.Create;
Bitmap.Width: = 32;
Bitmap.Height: = 32;
Bitmap.PixelFormat: = pf8bit;

Bitmap.Canvas.Brush.Color: = clWhite;
Bitmap.Canvas.FillRect (rect (0. 0. 32. 32));

Bitmap.Canvas.Brush.Color: = clGreen;
Bitmap.Canvas.Brush.Style: = bsDiagCross;
SetBkColor (Bitmap.Canvas.Handle, clWhite);
Bitmap.Canvas.FillRect (rect (0. 0. 32. 32));

Bitmap.TransparentColor: = clWhite;
Bitmap.Transparent: = true;
with canvas do
begin
for I: = 0 to 10 - 1 do
for Y: = 0 to 10 - 1 do
Draw (I * 32. Y * 32. Bitmap);
end;

Тоді може хто-небудь підкаже як він друкує фігури зі штрихуванням.
взагалі просто
Brush.Color: = clGreen;
Brush.Style: = bsDiagCross;
Rectangle (600, 100, 900, 400);
виводить прозорий квадрат.

а тобі, що можна придумати, щось на зразок цього (напевно):

with canvas do
begin
Brush.Bitmap: = TBitmap.Create;
Brush.Bitmap.LoadFromFile ( 'mybmp.bmp');
// Brush.Style: = bsDiagCross;
// Rectangle (600, 500, 900, 1500);
FillRect (Rect (100. 100. 500. 500));
Brush.Bitmap.Free;
Brush.Bitmap: = nil;
end;


де mybmp прозорий малюнок, 16х16 або будь-якого іншого формату.

Спасибі за відповіді, мабуть доведеться друк всі фігури з гратами тільки на білому тлі, а в моїй це все ж краще ніж на чорному.
У попередньому пості рядок:

Rectangle (600. 900. 900. 1200); // чорний квадрат з гратами, чи не прозорий


должа виглядати так:

Rectangle (600. 900. 900. 1200); // білий квадрат з гратами, чи не прозорий