<pre>
{Agrandir proportionnellement à partir d'une pastille la résolution d'une image quelconque. Visulalisateur Xavier}
procedure agrandissement_central(at_element:wformes.tforme); {écrit par denis Bertin le 11.12.2016}
var i,j:integer;
anode:font_ob1.testnode;
une_distance,rapport:real;
un_at_element:wformes.tforme;
control:boolean;
attrib:wcarac.TUn_attrib;
my_rect:trect;
begin
if at_element=nil then exit;
control:=(wmsg.msg.wparam and mk_control)<>0;
une_distance:=utile.distance_2pt(wformes.global_central_point,wmsg.point);
rapport:=une_distance/utile.distance(
wformes.global_central_point.x,
wformes.global_central_point.Y,
wformes.global_rect_central.Right,
wformes.global_rect_central.bottom)/200;
if rapport>=5 then rapport:=5;
if at_element.ClassType=wformes1.tforme_dessin then
begin
for i:=0 to pred(wformes1.tforme_dessin(at_element).elements.count) do
begin
anode:=wformes1.tforme_dessin(at_element).elements.at(i);
if control then
begin
anode.x:=round(anode.x-anode.x*rapport);
anode.y:=round(anode.y-anode.y*rapport);
anode.z:=round(anode.z-anode.z*rapport);
end
else
begin
anode.x:=round(anode.x+anode.x*rapport);
anode.y:=round(anode.y+anode.y*rapport);
anode.z:=round(anode.z+anode.z*rapport);
end;
end;
at_element.calcul;
end
else if at_element.ClassType=wformes1.tforme_text then
begin
my_rect:=at_element.rect;
if control then
wformes1.tforme_text(at_element).af.raf.taille:=
wformes1.tforme_text(at_element).af.raf.taille-
round(wformes1.tforme_text(at_element).af.raf.taille*rapport)
else
wformes1.tforme_text(at_element).af.raf.taille:=
wformes1.tforme_text(at_element).af.raf.taille+
round(wformes1.tforme_text(at_element).af.raf.taille*rapport);
if wformes1.tforme_text(at_element).af.raf.taille<=0 then
wformes1.tforme_text(at_element).af.raf.taille:=1;
if wformes1.tforme_text(at_element).af.raf.taille>999 then
wformes1.tforme_text(at_element).af.raf.taille:=999;
wformes1.tforme_text(at_element).af.raf.index:=0;
at_element.calcul;
wformes1.tforme_text(at_element).af.raf.x:=wformes1.tforme_text(at_element).af.raf.x-(at_element.right-my_rect.right) div 2;
wformes1.tforme_text(at_element).af.raf.y:=wformes1.tforme_text(at_element).af.raf.y-((at_element.top-my_rect.top)+(at_element.bottom-my_rect.bottom)) div 2;
at_element.calcul;
end
else if at_element.ClassType=wformes1.TForme_bloc_de_true_type then
begin
for j:=0 to pred(wformes1.TForme_bloc_de_true_type(at_element).une_collection.count) do
begin
attrib:=wformes1.TForme_bloc_de_true_type(at_element).une_collection.at(j);
if attrib<>nil then
begin
if attrib.ClassType=wcarac.TUn_attrib then
begin
if control then
attrib.size_font:=attrib.size_font-round(attrib.size_font*rapport)
else
attrib.size_font:=attrib.size_font+round(attrib.size_font*rapport);
if attrib.size_font<=0 then attrib.size_font:=1;
if attrib.size_font>500 then attrib.size_font:=500;
end;
end; {attrib<>nil}
end; {for j}
at_element.calcul;
end
else if at_element.ClassType=wformes1.tforme_ligne then
begin
if control then
wformes1.tforme_ligne(at_element).size:=
wformes1.tforme_ligne(at_element).size-
round(wformes1.tforme_ligne(at_element).size*rapport)
else
wformes1.tforme_ligne(at_element).size:=
wformes1.tforme_ligne(at_element).size+
round(wformes1.tforme_ligne(at_element).size*rapport);
if wformes1.tforme_ligne(at_element).size<=0 then
wformes1.tforme_ligne(at_element).size:=1;
if wformes1.tforme_ligne(at_element).size>500 then
wformes1.tforme_ligne(at_element).size:=500;
at_element.calcul;
end
else if at_element.ClassType=wformes1.tforme_little_texte then
begin
if control then
wformes1.tforme_little_texte(at_element).size:=
wformes1.tforme_little_texte(at_element).size-
round(wformes1.tforme_little_texte(at_element).size*rapport)
else
wformes1.tforme_little_texte(at_element).size:=
wformes1.tforme_little_texte(at_element).size+
round(wformes1.tforme_little_texte(at_element).size*rapport);
if wformes1.tforme_little_texte(at_element).size<=0 then
wformes1.tforme_little_texte(at_element).size:=1;
if wformes1.tforme_little_texte(at_element).size>999 then
wformes1.tforme_little_texte(at_element).size:=999;
at_element.calcul;
end
else if at_element.ClassType=wformebm.Tforme_TBitMap then
begin
my_rect:=at_element.rect;
if control then
begin
wformebm.Tforme_TBitMap(at_element).rect.left:=wformebm.Tforme_TBitMap(at_element).rect.left+
round(wformebm.Tforme_TBitMap(at_element).rect.left*rapport);
wformebm.Tforme_TBitMap(at_element).rect.top:=wformebm.Tforme_TBitMap(at_element).rect.top+
round(wformebm.Tforme_TBitMap(at_element).rect.top*rapport);
wformebm.Tforme_TBitMap(at_element).rect.right:=wformebm.Tforme_TBitMap(at_element).rect.right-
round(wformebm.Tforme_TBitMap(at_element).rect.right*rapport);
wformebm.Tforme_TBitMap(at_element).rect.bottom:=wformebm.Tforme_TBitMap(at_element).rect.bottom-
round(wformebm.Tforme_TBitMap(at_element).rect.bottom*rapport);
end
else
begin
wformebm.Tforme_TBitMap(at_element).rect.left:=wformebm.Tforme_TBitMap(at_element).rect.left-
round(wformebm.Tforme_TBitMap(at_element).rect.left*rapport);
wformebm.Tforme_TBitMap(at_element).rect.top:=wformebm.Tforme_TBitMap(at_element).rect.top-
round(wformebm.Tforme_TBitMap(at_element).rect.top*rapport);
wformebm.Tforme_TBitMap(at_element).rect.right:=wformebm.Tforme_TBitMap(at_element).rect.right+
round(wformebm.Tforme_TBitMap(at_element).rect.right*rapport);
wformebm.Tforme_TBitMap(at_element).rect.bottom:=wformebm.Tforme_TBitMap(at_element).rect.bottom+
round(wformebm.Tforme_TBitMap(at_element).rect.bottom*rapport);
end;
at_element.deplace(
((my_rect.right+my_rect.left) div 2-(at_element.rect.right+at_element.rect.left) div 2),
((my_rect.bottom+my_rect.top) div 2-(at_element.rect.bottom+at_element.rect.top) div 2),0);
{écrit par denis Bertin le 11.12.2016}
my_rect:=at_element.rect;
end
else if (at_element.ClassType=wformes2.tforme_groupe)
//or (at_element.ClassType=wformes2.Tforme_indice)
or (at_element.ClassType=wformes2.tforme_symetrie_horizontale)
or (at_element.ClassType=wformes2.tforme_symetrie_verticale)
or (at_element.ClassType=wformes2.tforme_Interpolation) then
begin
for i:=0 to pred(wformes2.tforme_groupe(at_element).groupe.count) do
begin
un_at_element:=wformes.tforme(wformes2.tforme_groupe(at_element).groupe.at(i));
if un_at_element<>nil then
agrandissement_central(un_at_element);
end;
at_element.calcul;
end;
end; {agrandissement_central}
</pre>
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.