IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Manipulation laborieuse des pixels d'un bitmap vs les pixels de la form


Sujet :

Delphi

  1. #41
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    je pense que Jipété ne regarde pas les choses avec assez de recul:
    C'est pas faux

    Citation Envoyé par Paul TOTH Voir le message
    TBitmap sous Lazarus et D7 ne sont pas identiques
    Ah ben me suis fait avoir, alors : on m'avait "vendu" Lazarus comme un "Delphi-like", m'aurait-on menti ?

    Citation Envoyé par Paul TOTH Voir le message
    1) BeginUpdate/EndUpdate n'existe pas sous Delphi
    Attention, si un newbie passe par là, il ne va rien comprendre !
    BeginUpdate/EndUpdate du bitmap n'existe pas sous Delphi, parce qu'il suffit de poser une Listview sur une fiche et en 3 secondes et demi avec la complétion, hop !, listview1.Items.BeginUpdate;

    Citation Envoyé par Paul TOTH Voir le message
    l'ordre des lignes est inversé sous Delphi (il faudrait vérifier que TBitmap supporte les hauteurs négatives....ça peut résoudre le problème)
    Il supporte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      SrcBmp := TBitmap.Create;
      try
        with SrcBmp do begin
          SrcBmp.PixelFormat:=pf32bit;
          SrcBmp.Width := IMAGE_WIDTH;
          SrcBmp.Height:= -IMAGE_HEIGHT;
        end;
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  2. #42
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    finalement quand on boucle sur chaque ligne, il est possible de redresser le bitmap
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for Index := 0 to H - 1 do
    begin
      Move(Pixels[Index], Bitmap.ScanLine[{$IFDEF DELPHI}H - 1 -{$ENDIF}Index}]^, W * 4); // 4 pour un pf32bit, 3 pour un 24bit...avec un tableau de pixels adapté à cette taille
    end;
    En fait, le {$IFDEF DELPHI} ici ne sert à rien car ça part en AV sous Linux, même avec les adaptations qui vont bien...

    Pas besoin de s'embrouiller la tête avec des hauteurs négatives, de toute façon, le move étant très susceptible, le plus simple (et je viens de tester dans les 2 environnements) est encore de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        {$IFDEF DELPHI}
          for v := 0 to IMAGE_HEIGHT-1 do
            Move(Pixels[v], SrcBmp.ScanLine[v]^, IMAGE_WIDTH*SizeOf(TRGBQuad));
        {$ELSE}
          SrcBmp.BeginUpdate;
          Move(Pixels^[0], SrcBmp.ScanLine[0]^, IMAGE_WIDTH*IMAGE_HEIGHT*SizeOf(TRGBQuad));
          SrcBmp.EndUpdate();
        {$ENDIF}
    Bien sûr ça entre en conflit avec ce que tu as dit auparavant (les balayages de haut en bas ou l'inverse), mais là, ce sont mes yeux qui parlent, si je puis dire.
    Eh haut Windows/D7, en bas Linux/Lazarus :
    Nom : comparwinlin.jpg
Affichages : 170
Taille : 72,7 Ko

    Et ils voient bien que l'image générée dans FormCreate et affichée par FormPaint à gauche, et celle affichée à droite par le bouton qui construit son bitmap depuis les mêmes données du FormCreate ont les mêmes dessins et les mêmes couleurs aux mêmes endroits.

    Le bout de code présenté ci-dessus est absolument identique (copier/coller) dans les deux environnements. Qu'en conclure ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #43
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 685
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 685
    Points : 13 102
    Points
    13 102
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    2) ScanLine[0] est la ligne du HAUT sous Lazarus, mais c'est la ligne du BAS sous Delphi
    ScanLine[0] est la ligne du haut sous Delphi.

  4. #44
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    ScanLine[0] est la ligne du haut sous Delphi.
    oups, au temps pour moi...mais c'est bien le bas du "DIB" comme le montre ce code
    Nom : scanline.png
Affichages : 169
Taille : 10,8 Ko

    je prend la ligne 1, et je rempli 2 lignes de pixels sauf 1 : 2 (lignes) * 4 (32bit) * 20 (largeur) - 4 (1 pixel 32bits)

    et c'est bien la ligne 0 qui est partiellement remplie et non la ligne 2 comme on pourrait s'y attendre

    du coup le DIB complet (et tête en bas) se trouve bien à l'adresse ScanLine[H-1]
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #45
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 685
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 685
    Points : 13 102
    Points
    13 102
    Par défaut
    C'est parler de haut et de bas qui prête à confusion
    C'est la ligne du haut de l'image qui se situe à la fin du bloc mémoire : H-1, H-2, ... , 1, 0

  6. #46
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    C'est parler de haut et de bas qui prête à confusion
    C'est la ligne du haut de l'image qui se situe à la fin du bloc mémoire : H-1, H-2, ... , 1, 0
    en fait ça dépend de la valeur donnée à Height (Positive ou Négative)
    j'ai juste augmenté les valeurs pour y voir quelque chose ^^
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var
     aBMP: TBitmap;
    begin
      aBMP := TBitmap.Create;
      aBMP.PixelFormat := pf32bit;
      aBMP.Width := 200;
      aBMP.Height:= 200;  // < ----   ici passer de -200 à 200 pour voir l'effet
      aBMP.Canvas.Brush.Color := clWhite;
      aBMP.Canvas.FillRect(aBMP.Canvas.ClipRect);
      FillChar(aBMP.scanLine[7]^, 8*4*200-400,0);
      Image1.Picture.Assign(aBMP);
      aBmp.Free;
    end;

  7. #47
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    'lut,

    alors chez moi, brut de décoffrage de copier/coller sans réfléchir, aBMP.Height:= 200; // < ---- ici passer de -200 à 200 pour voir l'effet sans toucher à rien me donne une magnifique image vide (et s'il y en avait une avant, elle est effacée), j'ai même changé la couleur pour essayer de voir s'il y avait quelque chose mais circulez, y a rien à voir !
    Et si je mets "-200" c'est un AV de plus à ma collection...

    Bon app', à +,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  8. #48
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    alors la je ne comprend pas .. t'es bien sous D7 ?

    j'ai compilé et testé sous D7 et D2009 et ça fonctionne !!!
    as tu bien copié tout le code ou juste la ligne cité ?
    si tu as juste repris la ligne avec valeur négative dans ton code tu peux avoir une va en fonction de l'utilisation de ScanLine[X]

    Parce que pour copier tout les pixels en une fois (par exemple) c'est toujours ScanLine[H-1] peut importe si Height est + ou -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    var
      y: Integer;
      SrcBmp: TBitmap;
     begin
      SrcBmp := TBitmap.Create;
      try
        with SrcBmp do begin
          SrcBmp.PixelFormat:=pf32bit;
          SrcBmp.Width := IMAGE_WIDTH;
          SrcBmp.Height := -IMAGE_HEIGHT;  // + ou -
        end;
        MoveMemory(SrcBmp.ScanLine[IMAGE_HEIGHT-1], @aPixels, IMAGE_WIDTH*IMAGE_HEIGHT*4);
        Image1.Picture.Assign(SrcBmp);
      finally
        SrcBmp.Free;
      end;
     
     
    end;
    l'image s'affichera tête en haut ou en bas
    mais les pixels n'ont pas étés inversés .. si on enregistre les images ainsi obtenues (avec + et -) on se rend bien compte qu'elles sont identiques

  9. #49
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Citation Envoyé par Cirec Voir le message
    alors la je ne comprend pas .. t'es bien sous D7 ?
    Ah, on s'est fait avoir tous les deux : moi d'avoir oublié de le dire et toi d'avoir oublié de le préciser, et pourtant c'est pas faute d'en avoir parlé, lol !

    Je suis sous D7 à 5 % du temps, et à 95 % sous Lazarus sous Linux !

    Alors oui, ça change des choses, des fois, mais je n'ai pas encore trouvé avec certitude quoi.

    J'ai fait comme tu suggérais, j'ai remplacé le IMAGE_HEIGHT de Height (= image ok) par -IMAGE_HEIGHT et paf !, AV...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  10. #50
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    et du coup tu utilises ce code complet ?
    tel quel ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var
     aBMP: TBitmap;
    begin
      aBMP := TBitmap.Create;
      aBMP.PixelFormat := pf32bit;
      aBMP.Width := 200;
      aBMP.Height:= 200;  // < ----   ici passer de -200 à 200 pour voir l'effet
      aBMP.Canvas.Brush.Color := clWhite;
      aBMP.Canvas.FillRect(aBMP.Canvas.ClipRect);
      FillChar(aBMP.scanLine[7]^, 8*4*200-400,0);
      Image1.Picture.Assign(aBMP);
      aBmp.Free;
    end;
    puis tu passes en -200
    et ça plante sous D7 et/ou sous Lazarus ?

    parce que si tu es en -200 et tu essayes de remplir plus d'une ligne de pixels en partant de
    ScanLine[0]
    tu auras effectivement une VA !!
    d’où ma demande d'info complémentaire

  11. #51
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Citation Envoyé par Cirec Voir le message
    et ça plante sous D7 et/ou sous Lazarus ?
    Tout plante sous Lazarus (et D7 est éteint et je n'en ai plus besoin) sauf ce bout de code avec ces valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      with aBMP do begin
        PixelFormat := pf32bit;
        Width := IMAGE_WIDTH;
        Height:= IMAGE_HEIGHT;  // < ----   ici passer de -200 à 200 pour voir l'effet
      end;
     
      aBmp.BeginUpdate;
      Move(Pixels^[0], aBmp.ScanLine[0]^, IMAGE_WIDTH*IMAGE_HEIGHT*4); //=1228800
      FillChar(aBMP.scanLine[0]^, 8*4*200*100, '0');
      // remplit la mémoire démarrant à aBMP.scanLine[0]^ avec 8*4*200*100 bytes du char '0'
      // en l'espèce, avec ces nombres (=640000), remplit plus de la moitié en gris en partant du haut du dessin
      aBmp.EndUpdate();
    Si je mets un nombre négatif, comme dit précédemment, Access Violation

    Attention, à cause du Move sous Lazarus, je perds la notion de balayage vertical : tout est copié en une passe entre BeginUpdate et EndUpdate.
    Dans MSDN, on peut lire, à propos du 3e paramètre de Move,
    MoveMemory
    Be aware that the last parameter, Length, is the number of bytes to copy into Destination, not the size of the Destination.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  12. #52
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    c'est bien ce que je pensai

    tu fais l'erreur que j'ai cité dans mon précédent post:
    FillChar(aBMP.scanLine[0]^, 8*4*200*100, '0'); // <--- FAUX == VA
    doit être:
    FillChar(aBMP.scanLine[7]^, 8*4*200*100, '0');

    l'exemple était prévu pour être utilisé tel quel, pas juste modifier le height sans tenir compte de la suite

    ceci dit ... vu que t'as fait un mix des deux codes je suis pas certain que cette ligne passe:
    Move(Pixels^[0], aBmp.ScanLine[0]^, IMAGE_WIDTH*IMAGE_HEIGHT*4); //=1228800
    peut être comme ceci:
    Move(Pixels^[0], aBmp.ScanLine[IMAGE_HEIGHT-1]^, IMAGE_WIDTH*IMAGE_HEIGHT*4); //=1228800

    je ne sais pas ... j'ai laissé tombé Lazarus, il produisait des applications trop volumineuses, à mon gout, comparé à Delphi .

  13. #53
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Bonjour,
    Citation Envoyé par Cirec Voir le message
    c'est bien ce que je pensais

    tu fais l'erreur que j'ai citée dans mon précédent post:
    FillChar(aBMP.scanLine[0]^, 8*4*200*100, '0'); // <--- FAUX == VA
    doit être:
    FillChar(aBMP.scanLine[7]^, 8*4*200*100, '0');

    l'exemple était prévu pour être utilisé tel quel, pas juste modifier le height sans tenir compte de la suite
    Je réécris les conclusions auxquelles je suis arrivé (hier matin je crois) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        {$IFDEF DELPHI}
          for v := 0 to IMAGE_HEIGHT-1 do
            Move(Pixels[v], SrcBmp.ScanLine[v]^, IMAGE_WIDTH*SizeOf(TRGBQuad));
        {$ELSE}
          SrcBmp.BeginUpdate;
          Move(Pixels^[0], SrcBmp.ScanLine[0]^, IMAGE_WIDTH*IMAGE_HEIGHT*SizeOf(TRGBQuad));
          SrcBmp.EndUpdate();
        {$ENDIF}
    Vu, la boucle pour Delphi totalement absente pour Lazarus où on démarre à 0 et tout (enfin la quantité représentée par IMAGE_WIDTH*IMAGE_HEIGHT*SizeOf(TRGBQuad)) est fait en une passe ? C'est à s'y casser le nez, et c'est tout l'intérêt de cette discussion.

    EDIT : j'ai trouvé pourquoi la boucle Delphi ne fonctionnait pas sous Lazarus : il manquait le chapeau !
    Les dangers du copier/coller et les silences du compilo...
    Donc ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          for v := 0 to IMAGE_HEIGHT-1 do
            Move(Pixels^[v], SrcBmp.ScanLine[v]^, IMAGE_WIDTH*SizeOf(TRGBQuad));
    fonctionne

    Citation Envoyé par Cirec Voir le message
    je ne sais pas ... j'ai laissé tombé Lazarus, il produisait des applications trop volumineuses, à mon gout, comparé à Delphi .
    Ah oui, le "Helloworld" de 22 Mo
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  14. #54
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 685
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 685
    Points : 13 102
    Points
    13 102
    Par défaut
    Citation Envoyé par Cirec Voir le message
    en fait ça dépend de la valeur donnée à Height (Positive ou Négative)
    Ce n'est qu'une question de représentation. Scanline[0] reste la ligne du haut de l'image qu'on l'affiche normalement ou tête en bas.

    A noter :
    Ca ne fonctionne pas en pf24bit. Il y a un CreateCompatibleBitmap par la au milieu qui n'aime guère les valeurs négatives.
    Le bitmap sauvegardé a toujours la même orientation.

  15. #55
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    si je puis me permettre de résumer...c'est bel et bien pour cela que dans mon article je propose de passer par un tableau de couleurs et la fonction SetDIBitsToDevice (pour Windows uniquement du coup) car là on ne se préoccupe plus des structures internes de TBitmap, on se contente d'afficher les pixels qu'on a défini avec les paramètres qui vont bien pour que Windows les accepte.

    il faudrait voir s'il est possible de faire la même chose sous Linux, mais le problème de Linux c'est qu'il y a plusieurs API Graphique (QT, Gnome, KDE...)

    à l'époque de Kylix j'avais fait un test directement au niveau XWindow mais je n'étais jamais arrivé au bout
    http://tothpaul.free.fr/sources.php?kylix.md2t
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/03/2015, 15h36
  2. bibliothèques pour lire les pixels d'un bitmap
    Par nonozor dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 28/08/2008, 00h15
  3. Lire les pixels de grandes images sans les ouvrir
    Par psicot dans le forum Multimédia
    Réponses: 1
    Dernier message: 16/04/2007, 18h59
  4. Manipuler avec des classes
    Par poussinphp dans le forum FMOD
    Réponses: 3
    Dernier message: 03/06/2006, 18h20
  5. Réponses: 14
    Dernier message: 04/01/2006, 14h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo