![]() |
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... |
AW: Größe eines Bildes in JvRichEdit ändern
Zitat:
|
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. |
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: ![]() |
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 04:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz