Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Größe eines Bildes in JvRichEdit ändern (https://www.delphipraxis.net/161630-groesse-eines-bildes-jvrichedit-aendern.html)

t0mmy 13. Jul 2011 12:24

Größe eines Bildes in JvRichEdit ändern
 
Hallo!

Wie kann ich eine jpg Datei, die ich geladen habe von der Auflösung ändern... Klar.. mit jpg.Height := xxx und jpg.Width := xxx
aber wenn ich das Bild nun in JvRichEdit1.InsertGraphic(jpg,false) einfügen möchte meldet er einen fehler

Das ich eine jpg nicht verändern kann is mir klar.. aber beim Einfügen in die TJvRichEdit müsste es doch eine möglichkeit geben...

DeddyH 13. Jul 2011 12:52

AW: Größe eines Bildes in JvRichEdit ändern
 
Zitat:

Zitat von t0mmy (Beitrag 1111492)
aber wenn ich das Bild nun in JvRichEdit1.InsertGraphic(jpg,false) einfügen möchte meldet er einen fehler

Sag uns bloß nicht, welchen, sonst kommen wir noch drauf, was da falsch sein könnte. Und wieso soll man eine Grafik nicht in der Größe ändern können?

t0mmy 13. Jul 2011 13:30

AW: Größe eines Bildes in JvRichEdit ändern
 
Hi

Also der Comipler schreit: Das man die Größe des Bildes nicht ändern kann.

Sowohl jpg.Height & jpg.Width als auch jpg.SetSize(x,x) funktionieren nicht.

DeddyH 13. Jul 2011 13:48

AW: Größe eines Bildes in JvRichEdit ändern
 
Du willst z.B. jpg.Width ändern, und das ist nicht erlaubt? Ist mir noch nicht untergekommen.

[edit] Hast Du mal versucht, die Grafik vorher zu skalieren? Z.B. hiermit:http://www.delphipraxis.net/1095307-post20.html? [/edit]

Geronimo 20. Mär 2019 20:31

AW: Größe eines Bildes in JvRichEdit ändern
 
Hallo Leute!

Falls es noch jemanden interessiert, ich hatte jetzt die Aufgabe, die Größe von Bildern in einem JvRichEdit zu ändern.
Mir fiel nichts besseres ein, als in den rtf-Code zu gehen.
Herausgekommen ist folgende Unit.
Möge die Community den Code verreißen!
:lol:

Gruß
Geronimo



Code:
unit rtfPicResize;

interface

uses
  JvRichEdit,StrUtils,Classes,SysUtils;

type
  TrtfPic = record
    Width_Start: Integer;
    Width_End: Integer;
    Height_Start: Integer;
    Height_End: Integer;
  end;

type TrtfPics = array of TrtfPic;

function getRtfStringFromRichEdit(re: TjvRichEdit): String;
procedure WriteRtfStringtoRichEdit(rtfStr: String;var re: TjvRichEdit);
function CountPics(re: TjvRichEdit): TrtfPics;
function getPicHeight(PicIndex: Integer; re: TjvRichEdit): Integer;
procedure setPicHeight(PicIndex: Integer; AHeight: Integer;var re: TjvRichEdit);
function getPicWidth(PicIndex: Integer; re: TjvRichEdit): Integer;
procedure setPicWidth(PicIndex: Integer; AWidth: Integer;var re: TjvRichEdit);
function getLastPicIndex(re: TjvRichEdit): Integer;

implementation

function getRtfStringFromRichEdit(re: TjvRichEdit): String;
var
  ss: TStringStream;
begin
   try
     ss := TStringStream.Create;
     re.Lines.SaveToStream(ss);
     result := ss.DataString;
   finally
     ss.free;
   end;
end;

procedure WriteRtfStringtoRichEdit(rtfStr: String;var re: TjvRichEdit);
var
  ss: TStringStream;
begin
  try
    ss := TStringStream.Create(RtfStr);
    re.Lines.LoadFromStream(ss);
  finally
    ss.free;
  end;
end;

function CountPics(re: TjvRichEdit): TrtfPics;
var
  p1,p2: Integer;
  rtfStr: String;
begin
  p1 := 1;
  p2 := 1;
  setlength(Result,0);

  rtfStr := getRtfStringFromRichEdit(re);

  while p1 > 0 do begin
    p1 := posEx('picwgoal',rtfStr,p2);
    if p1 > 0 then begin
      p2 := posEx('\',rtfStr,p1);

      setlength(Result,length(Result)+1);
      Result[length(Result)-1].Width_Start := p1 +length('picwgoal');
      Result[length(Result)-1].Width_End := p2;

      p1 := posEx('pichgoal',rtfStr,p2);
      p2 := posEx(' ',rtfStr,p1);

      Result[length(Result)-1].Height_Start := p1 +length('pichgoal');
      Result[length(Result)-1].Height_End := p2;
    end;
  end;
end;

function getPicHeight(PicIndex: Integer; re: TjvRichEdit): Integer;
var
  rtfStr: String;
  Pics: TRtfPics;
  start,Ende: Integer;
begin
  rtfStr := getRtfStringFromRichEdit(re);
  Pics := CountPics(re);
  result := 0;

  if PicIndex <= length(Pics)-1 then begin
    Start := Pics[PicIndex].Height_Start;
    Ende := Pics[PicIndex].Height_End;
    result := strToInt(midStr(rtfStr,Start,Ende-Start));
  end;
end;

procedure setPicHeight(PicIndex: Integer; AHeight: Integer;var re: TjvRichEdit);
var
  rtfStr,NewRtfStr: String;
  Pics: TRtfPics;
  start,Ende: Integer;
  ss: TStringStream;
begin
  rtfStr := getRtfStringFromRichEdit(re);
  Pics := CountPics(re);

  if PicIndex <= length(Pics)-1 then begin
    Start := Pics[PicIndex].Height_Start;
    Ende := Pics[PicIndex].Height_End;
    NewRtfStr := LeftStr(rtfStr,Start-1)+IntToStr(AHeight)+RightStr(rtfStr,length(rtfStr)-ende+1);

    try
      ss := TStringStream.Create(NewRtfStr);
      re.Lines.LoadFromStream(ss);
    finally
      ss.Free;
    end;
  end;
end;

function getPicWidth(PicIndex: Integer; re: TjvRichEdit): Integer;
var
  rtfStr: String;
  Pics: TRtfPics;
  start,Ende: Integer;
begin
  rtfStr := getRtfStringFromRichEdit(re);
  Pics := CountPics(re);
  result := 0;

  if PicIndex <= length(Pics)-1 then begin
    Start := Pics[PicIndex].Width_Start;
    Ende := Pics[PicIndex].Width_End;
    result := strToInt(midStr(rtfStr,Start,Ende-Start));
  end;
end;

procedure setPicWidth(PicIndex: Integer; AWidth: Integer;var re: TjvRichEdit);
var
  rtfStr,NewRtfStr: String;
  Pics: TRtfPics;
  start,Ende: Integer;
  ss: TStringStream;
begin
  rtfStr := getRtfStringFromRichEdit(re);
  Pics := CountPics(re);

  if PicIndex <= length(Pics)-1 then begin
    Start := Pics[PicIndex].Width_Start;
    Ende := Pics[PicIndex].Width_End;
    NewRtfStr := LeftStr(rtfStr,Start-1)+IntToStr(AWidth)+RightStr(rtfStr,length(rtfStr)-ende+1);

    try
      ss := TStringStream.Create(NewRtfStr);
      re.Lines.LoadFromStream(ss);
    finally
      ss.Free;
    end;
  end;
end;

function getLastPicIndex(re: TjvRichEdit): Integer;
var
  Pics: TRtfPics;
begin
  Pics := CountPics(re);
  result := length(Pics)-1;
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz