2015-09-22 8 views
0

Когда я увеличить размер растрового изображения с помощью (например) ...Увеличение размера или глубину TBitmap

bitmap.Width := bitmap.Width + 30; 

... Есть ли у меня контролировать то, что правая 30 пикселей наполняются, или я просто предположить, что они неинициализированный

точно так же, если я изменю PixelFormat от pf24bit к pf32bit, я могу контролировать то, что альфа-байт инициализируется?

Удивительно новичок вопрос, но мой google-fu не смог меня. :)

+2

Заполните новые пиксели явно –

+2

1) Заполните сами (с помощью 'FillRect'). 2) Нет. –

ответ

1

Поскольку в этом документе не указано, что происходит в этом случае, вы не можете положиться ни на что. Скорее всего, новые пиксели будут 0 (черный), но если это важно для вас то, что они есть, вы должны четко заполнить их:

FUNCTION ExpandBitMap(BMP : TBitMap ; AddW,AddH : Cardinal ; FillColor : TColor = clBlack) : TBitMap; 
    VAR 
    OrgW,OrgH : Cardinal; 

    BEGIN 
    OrgW:=BMP.Width; OrgH:=BMP.Height; 
    BMP.Width:=OrgW+AddW; BMP.Height:=OrgH+AddH; 
    BMP.Canvas.Brush.Color:=FillColor; 
    BMP.Canvas.Brush.Style:=bsSolid; 
    BMP.Canvas.FillRect(Rect(OrgW,0,BMP.Width,BMP.Height)); 
    BMP.Canvas.FillRect(Rect(0,OrgH,OrgW,BMP.Height)); 
    Result:=BMP 
    END; 

Аналогично с альфа-каналом - я оставлю его в качестве упражнения пользователю сделать аналогичную функцию :-).

 Смежные вопросы

  • Нет связанных вопросов^_^