Avatar billede athlon-pascal Juniormester
30. september 2002 - 19:01 Der er 6 kommentarer og
1 løsning

miniatureeksempel

Når man højreklikker på skrivebordet og vælger Egenskaber dukker, som i sikkert ved, skærm-kontrolpanelet op. På det første faneblad, Baggrund, vises, som i sikkert også ved, et miniaturebillede (eksempel) af skærmen med de aktuelle baggrundsindstillinger.

Jeg har en form med:
- En TImage (name:='imgEksempel', brug evt. Ekspertens logo som Picture)
- En anden TImage (name:='imgBaggrund', autosize:=false, width:=152, heigth:=112)
- En TButton (name:='btnBaggrund')

Nu siger vi at imgBaggrund er skrivebordets baggrund.
>> Hvordan viser jeg miniaturevisning i imgEksempel ved tryk på btnBaggrund?
Den skal kunne vise det:
- Centreret
- Side om side
- Stræk

Og det skal naturligvis være de rigtige størelsesforhold.

Bruger D4 standard under Win98.
Avatar billede exp-ralle Nybegynder
30. september 2002 - 19:05 #1
Følger lige med...
Avatar billede borrisholt Novice
01. oktober 2002 - 08:14 #2
Det du spørger om er hvordan man laver en Resize på et billede således det stadig passer i dimmentionerne ...

Kig lidt på det her :

unit UnitResize;

interface

uses
  Windows, Graphics, JPEG, SysUtils, ExtCtrls;

procedure ResizePicture(const FileName : TFileName; XMax,YMax:integer);

implementation


procedure ResizePicture(const FileName : TFileName; XMax,YMax:integer);
var
  MainpX,MainpY,FormY,FormX,a,b,Faktor:Real;
  JPEGImage : TJPEGImage;
  Bitmap : TBitmap;
begin
  JPEGImage := TJPEGImage.Create;
  JPEGImage.LoadFromFile(FileName);
  JPEGImage.CompressionQuality := 30;
  a := JPEGImage.Width / XMax;
  b := JPEGImage.Height / YMax;
  MainpX := JPEGImage.width;
  MainpY := JPEGImage.height;

  FormX := XMax;
  FormY := YMax;

  If a >= b Then
  Begin
    faktor := mainpX / FormX;
    mainpX := FormX;
    mainpY := mainpY / faktor;
  End;

  If a < b Then
  Begin
    Faktor := mainpY / FormY;
    mainpY := FormY;
    mainpX := mainpX / faktor;
  End;


  Bitmap := TBitmap.Create;
  Bitmap.width:=Trunc(MainpX);
  Bitmap.Height:=Trunc(MainpY);
  Bitmap.Canvas.StretchDraw(Bitmap.Canvas.ClipRect, JPEGImage);

  JPEGImage.Free;

  RenameFile(FileName, '_' + FileName);
  JPEGImage := TJPEGImage.Create;
  JPEGImage.Assign(Bitmap);
  JPEGImage.SaveToFile(FileName);
  JPEGImage.Free;
  BitMap.Free;
end;



end.


Jens B
Avatar billede athlon-pascal Juniormester
04. oktober 2002 - 20:54 #3
JB -> Det er ikke helt det jeg mener, jeg vil have den til at vise det som i skærmindstillingerne.

Der skal nok bruges screen.width og screen.height

Lavede noget kode (Side om side), men det har vist sig at det ikke er det rigtige størrelsesforhold:

procedure TForm1.btnBaggrundClick(Sender: TObject);
var
  I,J: Integer;
  I1, J1: Integer;
begin
  imgEksempel.Visible:=false;
  imgEksempel.Stretch:=false;
  imgEksempel.Picture:=nil;
  for I:=0 to imgEksempel.Width do
    for J:=0 to imgEksempel.Height do
    begin
        I1:=((Screen.Width div imgEksempel.Width*(I))mod(imgBaggrund.Width));
        J1:=((Screen.Height div imgEksempel.Height*(J))mod(imgBaggrund.Height));
        imgEksempel.Canvas.Pixels[I, J]:=imgBaggrund.Canvas.Pixels[I1,J1];
    end;
  imgEksempel.Visible:=true;
end;


Er forresten kommet i tanke om at jeg ikke behøver en metode til Stræk-visning,
Avatar billede athlon-pascal Juniormester
04. oktober 2002 - 20:55 #4
(fortsat fra forige) ... imgEksempel.Stretch sættes bare til false :)
Avatar billede athlon-pascal Juniormester
05. oktober 2002 - 16:30 #5
Ingen ideer?
Avatar billede athlon-pascal Juniormester
06. oktober 2002 - 18:21 #6
Overhoved ingen ideer ..?
Avatar billede athlon-pascal Juniormester
08. oktober 2002 - 16:57 #7
Lukker :(

P.S. Tror jeg har fundet en løsning, måske ikke den optimale men bedre end ingenting, prøver næste gang jeg har adgang til Delphi :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Kryptokustode til opbygning af Forsvarets nye IT-platform

Politiets Efterretningstjeneste

AI/ML udvikler i PET

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Teknologirådgiver inden for AI-området til Teknologiafdelingen