T O P I C R E V I E W |
john_siggy@yahoo.com |
Posted - Jan 27 2018 : 10:05:01 Want to write text with an opaque background. This is similar to text with a transparent background but some of the background shows through. Want to use GDI Plus
Thanks in Advance, |
11 L A T E S T R E P L I E S (Newest First) |
xequte |
Posted - Jan 29 2018 : 02:32:20 Hi John
Sorry, the forum attachment code can't handle the @ symbol in your username I have encoded as %40
Nigel Xequte Software www.imageen.com
|
john_siggy@yahoo.com |
Posted - Jan 28 2018 : 19:43:01 Thanks a lot Bill. Need to upgrade to 7.5.
Cheers,
John |
w2m |
Posted - Jan 28 2018 : 14:58:04 John,
Here are 3 ways to achieve your objective:
procedure TForm1.TextLayer1Click(Sender: TObject);
var
iLayer: Integer;
begin
Screen.Cursor := crHourglass;
try
ImageEnView1.Proc.SaveUndo('Add Text Layer ' +
IntToStr(ImageEnView1.Proc.UndoCount + 1));
Undo1.Hint := ImageEnView1.Proc.UndoCaptions[0];
Undo1.Enabled := ImageEnView1.Proc.CanUndo;
iLayer := ImageEnView1.LayersAdd(ielkText);
ImageEnView1.Layers[iLayer].Name := 'Text Layer';
EditText1.Text := 'Security Monitor Pro- Text Layer';
TIETextLayer(ImageEnView1.CurrentLayer).Text := EditText1.Text;
ImageEnView1.Layers[iLayer].PosX := ImageEnView1.Layers[iLayer - 1]
.PosX + 100;
ImageEnView1.Layers[iLayer].PosY := ImageEnView1.Layers[iLayer - 1]
.PosY + 100;
ImageEnView1.MouseInteract := ImageEnView1.MouseInteract +
[miMoveLayers, miResizeLayers];
ImageEnView1.Layers[ImageEnView1.LayersCurrent].Height :=
ImageEnView1.IEBitmap.Height div 4;
ImageEnView1.Layers[ImageEnView1.LayersCurrent].Width :=
ImageEnView1.IEBitmap.Width div 3;
TIETextLayer(ImageEnView1.CurrentLayer).AutoSize := False;
TIETextLayer(ImageEnView1.CurrentLayer).Alignment := iejCenter;
TIETextLayer(ImageEnView1.CurrentLayer).Layout := ielCenter;
TIETextLayer(ImageEnView1.CurrentLayer).BorderColor := clNone;
TIETextLayer(ImageEnView1.CurrentLayer).FillColor := ColorBox2.Selected;
TIETextLayer(ImageEnView1.CurrentLayer).FillColor2 := ColorBox2.Selected;
TIETextLayer(ImageEnView1.CurrentLayer).Transparency := UpDown1.Position;
TIETextLayer(ImageEnView1.CurrentLayer).BorderWidth := 0;
TIETextLayer(ImageEnView1.CurrentLayer).Font.Size :=
UpDownPenSize1.Position;
TIETextLayer(ImageEnView1.CurrentLayer).Font.Color := ColorBox1.Selected;
if Bold1.Down then
TIETextLayer(ImageEnView1.CurrentLayer).Font.Style := [fsBold];
if Italic1.Down then
TIETextLayer(ImageEnView1.CurrentLayer).Font.Style :=
TIETextLayer(ImageEnView1.CurrentLayer).Font.Style + [fsITalic];
if UnderLine1.Down then
TIETextLayer(ImageEnView1.CurrentLayer).Font.Style :=
TIETextLayer(ImageEnView1.CurrentLayer).Font.Style + [fsUnderline];
ImageEnView1.LayersCurrent := iLayer;
ImageEnView1.Update;
UpdateStatusBar;
finally
Screen.Cursor := crDefault;
end;
end;
procedure TForm1.CreateLayerFromText1Click(Sender: TObject);
var
iLayer: Integer;
begin
EditText1.Text := 'Security Monitor Pro- Create Layer From Text';
if Bold1.Down then
iLayer := ImageEnView1.LayersCreateFromText(Trim(EditText1.Text), 'Arial',
UpDownPenSize1.Position, ColorBox1.Selected, [fsBold], False, 3, 2, 0,
AntiAlias1.Checked)
else
iLayer := ImageEnView1.LayersCreateFromText(Trim(EditText1.Text), 'Arial',
UpDownPenSize1.Position, ColorBox1.Selected, [], False, 3, 2, 0,
AntiAlias1.Checked);
ImageEnView1.Proc.CastColor(0, ImageEnView1.IEBitmap.Height-1, TColor2TRGB(ColorBox2.Selected), 15);
ImageEnView1.Proc.CastAlpha(0, ImageEnView1.IEBitmap.Height-1, TrackBarTransparency1.Position, 15);
if iLayer <> -1 then
begin
ImageEnView1.Layers[iLayer].PosX := 0;
ImageEnView1.Layers[iLayer].PosY := 0;
end;
ImageEnView1.MouseInteract := ImageEnView1.MouseInteract +
[miMoveLayers, miResizeLayers];
ImageEnView1.Update;
end;
procedure TForm1.RawText1Click(Sender: TObject);
begin
// Add a new layer
ImageEnView1.LayersAdd;
ImageEnView1.CurrentLayer.PosX := 0;
ImageEnView1.CurrentLayer.PosY := 0;
ImageEnView1.CurrentLayer.Height := ImageEnView1.IEBitmap.Height div 4;
ImageEnView1.CurrentLayer.Width := ImageEnView1.IEBitmap.Width;
// White fill the new layer
ImageEnView1.Proc.Fill(ColorBox2.Selected);
// Make the white background transparent
ImageEnView1.Proc.SetTransparentColors(TColor2TRGB(ColorBox2.Selected), TColor2TRGB(ColorBox2.Selected), TrackBarTransparency1.Position);
EditText1.Text := ' Security Monitor Pro- Text Out ';
// Output our text
ImageEnView1.Proc.TextOut(Align_Text_Horz_Center, Align_Text_Vert_Center, EditText1.Text, 'Arial', UpDownPenSize1.Position, ColorBox1.Selected, [fsBold]);
ImageEnView1.MouseInteract := ImageEnView1.MouseInteract +
[miMoveLayers, miResizeLayers];
ImageEnView1.Update;
end;
If none of these meet your needs then please discuss with Nigel.
 Bill Miller Adirondack Software & Graphics Email: w2m@hughes.net EBook: http://www.imageen.com/ebook/ Custom Commercial ImageEn Development
|
w2m |
Posted - Jan 28 2018 : 12:11:57 Got it... Give me some time to try this.
Bill Miller Adirondack Software & Graphics Email: w2m@hughes.net EBook: http://www.imageen.com/ebook/ Custom Commercial ImageEn Development |
john_siggy@yahoo.com |
Posted - Jan 28 2018 : 12:10:44 Hi Bill,
I Emailed an example
Insert Image:  |
john_siggy@yahoo.com |
Posted - Jan 28 2018 : 11:58:46 Text is normal but behind the clear text is an opaque background that allows, say half of the background to show Through. Somewhere between a transparent background and a background of, say, white. |
w2m |
Posted - Jan 28 2018 : 11:58:40 Still not visible. Can you email me the bitmap or at least answer my question. I can not help unless I understand you.
Bill Miller Adirondack Software & Graphics Email: w2m@hughes.net EBook: http://www.imageen.com/ebook/ Custom Commercial ImageEn Development |
john_siggy@yahoo.com |
Posted - Jan 28 2018 : 11:47:05 Looking for Opaque Text Background not transparent as in all your examples. Please see the attached image for examples of opaque background for text. In the third example you set: iPenAlpha := 255 but never use iPenAlpha.

Regards |
w2m |
Posted - Jan 27 2018 : 13:22:55 My recommendation is to upgrade to 7.5, because it has text layers which makes it easy to reposition the text with the mouse and change Background colors, font colors, font name and text size and font attributes on the fly:
procedure TForm1.TextLayer1Click(Sender: TObject);
var
i: Integer;
iLayer: Integer;
begin
Screen.Cursor := crHourglass;
try
ImageEnView1.Proc.SaveUndo('Add Text Layer ' +
IntToStr(ImageEnView1.Proc.UndoCount + 1));
Undo1.Hint := ImageEnView1.Proc.UndoCaptions[0];
Undo1.Enabled := ImageEnView1.Proc.CanUndo;
iLayer := ImageEnView1.LayersAdd(ielkText);
ImageEnView1.Layers[iLayer].Name := 'Text Layer';
TIETextLayer(ImageEnView1.CurrentLayer).Text := EditText1.Text;
ImageEnView1.Layers[iLayer].PosX := ImageEnView1.Layers[iLayer - 1]
.PosX + 100;
ImageEnView1.Layers[iLayer].PosY := ImageEnView1.Layers[iLayer - 1]
.PosY + 100;
ImageEnView1.MouseInteract := ImageEnView1.MouseInteract +
[miMoveLayers, miResizeLayers];
if ImageEnView1.Layers[ImageEnView1.LayersCurrent].Width >
ImageEnView1.IEBitmap.Width then
ImageEnView1.Layers[ImageEnView1.LayersCurrent].Width :=
ImageEnView1.IEBitmap.Width;
TIETextLayer(ImageEnView1.CurrentLayer).Alignment := iejCenter;
TIETextLayer(ImageEnView1.CurrentLayer).Layout := ielCenter;
TIETextLayer(ImageEnView1.CurrentLayer).BorderColor := clNone;
TIETextLayer(ImageEnView1.CurrentLayer).FillColor := ColorBox2.Selected;
TIETextLayer(ImageEnView1.CurrentLayer).FillColor2 := ColorBox2.Selected;
TIETextLayer(ImageEnView1.CurrentLayer).BorderWidth := 0;
TIETextLayer(ImageEnView1.CurrentLayer).Font.Size :=
UpDownPenSize1.Position;
TIETextLayer(ImageEnView1.CurrentLayer).Font.Color := ColorBox1.Selected;
if Bold1.Down then
TIETextLayer(ImageEnView1.CurrentLayer).Font.Style := [fsBold];
if Italic1.Down then
TIETextLayer(ImageEnView1.CurrentLayer).Font.Style :=
TIETextLayer(ImageEnView1.CurrentLayer).Font.Style + [fsITalic];
if UnderLine1.Down then
TIETextLayer(ImageEnView1.CurrentLayer).Font.Style :=
TIETextLayer(ImageEnView1.CurrentLayer).Font.Style + [fsUnderline];
TIETextLayer(ImageEnView1.CurrentLayer).AutoSize := True;
ImageEnView1.LayersCurrent := iLayer;
UpdateStatusBar;
finally
Screen.Cursor := crDefault;
end;
end;
With older versions you could try LayersCreateFromText, but 7.5 works the best and the text in the layer is not editable without 7.5:
procedure TForm1.ImageEnView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
iX := ImageEnView1.Layers[ImageEnView1.LayersCurrent].ConvXScr2Bmp(X);
iY := ImageEnView1.Layers[ImageEnView1.LayersCurrent].ConvYScr2Bmp(Y);
if AddText1.Down then
begin
if Bold1.Checked then
iLayer := ImageEnView1.LayersCreateFromText(Trim(Text1.Text),
Font1.Items[Font1.ItemIndex], StrToIntDef(FontSize1.Text, 20),
PenColor1.Selected, [fsBold], Shadow1.Checked, 3, 2, 0,
AntiAlias1.Checked)
else
iLayer := ImageEnView1.LayersCreateFromText(Trim(Text1.Text),
Font1.Items[Font1.ItemIndex], StrToIntDef(FontSize1.Text, 20),
PenColor1.Selected, [], Shadow1.Checked, 3, 2, 0, AntiAlias1.Checked);
if iLayer <> -1 then
begin
ImageEnView1.Layers[iLayer].PosX := iX;
ImageEnView1.Layers[iLayer].PosY := iY;
end;
end;
You can also try iIECanvas.DrawText, but the text is not editable:
procedure TForm1.DrawText;
var
iPenSize: Integer;
iPenColor: TColor;
iPenAlpha: Integer;
iIECanvas: TIECanvas;
begin
MyUndo(ImageEnView1);
{ Draw on the Non-Alpha Canvas }
iIECanvas := TIECanvas.Create(ImageEnView1.IEBitmap.Canvas,
AntiAlias1.Checked, UseGDIPlus1.Checked);
iPenSize := StrToIntDef(PenSize1.Text, 20);
iPenColor := PaintColor.Color;
iPenAlpha := 255;
iIECanvas.Font.Name := 'Arial';
iIECanvas.Font.Size := iPenSize;
iIECanvas.Font.Color := iPenColor;
iIECanvas.Font.Style := [fsBold];
iIECanvas.Font.Height := 72;
iIECanvas.DrawText( EditText1.Text, Rect(0, 0, 500, 300));
ImageEnView1.Bitmap.Modified := ImageEnView1.Proc.CanUndo;
ImageEnView1.Update;
end;
|
john_siggy@yahoo.com |
Posted - Jan 27 2018 : 13:18:10 Thanks for your interest. I am using 7.0.1 but may upgrade if needed.
|
w2m |
Posted - Jan 27 2018 : 10:07:37 What version of ImageEn are you using?
Bill Miller Adirondack Software & Graphics Email: w2m@hughes.net EBook: http://www.imageen.com/ebook/ Custom Commercial ImageEn Development |
|
|