begin process at 2010 02 10 05:38:44
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > BITMAP 32BITS INTÉGRÉ À LA VCL (TIMAGE, TPICTURE, TBITMAP, TOPENPICTUREDIALOG)

BITMAP 32BITS INTÉGRÉ À LA VCL (TIMAGE, TPICTURE, TBITMAP, TOPENPICTUREDIALOG)


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Classé sous :Bitmap32, 32Bit, Alpha, Opacité, Transparence Niveau :Initié Date de création :18/04/2009 Vu / téléchargé :2 014 / 314

Auteur : cirec

Ecrire un message privé
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
ça fait longtemps que j'ai ce code sous le coude (déjà plusieurs refontes) et j'ai pensé qu'il était temps de vous en faire profiter ^^

Alors c'est quoi ?:
ben tout simplement la prise en charge du Bitmap 32Bit par la VCL (en RunTime uniquement) en toute transparence ... (jeu de mots ^^)
ça veut dire que pour vous rien ne change (presque) vous utilisez les composants comme avant (TImage, TPicture, TBitmap) mais le 32Bits est géré.

Mais comment donc ?:
ben en surchargeant la classe TBitmap (voir le code dans crBitmap32.pas).

concrètement vous avez 2 propriétés supplémentaires:
  NoAlpha: permet de ne pas utiliser le canal Alpha (32Bit Uniquement)
  nb: NoAlpha est prioritaire sur propriété Transparent.
  Opacity: de 0 à 255 permet changer l'opacité du Bitmap
peu importe le PixelFormat.
0 = Transparent.
255 = Opaque.

Pour tous les Bitmaps en-dessous de 32Bit:
si Opacity est <> 255 le bitmap est automatiquement transformé en 32Bit


Note importante :
pour accéder aux propriétés supplémentaires depuis un TBimap contenu dans un TPicture/TImage
vous serez obligé de transtyper explicitement le Bitmap en Bitmap ... hein quoi .. ^^

  img_BkGround.Picture.Bitmap.Opacity <------- propriété inconnue
  // Solution:
  TBitmap(img_BkGround.Picture.Bitmap).Opacity

en revanche ceci ne pose aucun problème:
var aBMP : TBitmap;
begin
  aBMP := TBitmap.Create;
  aBMP.Opacity := 180;
  ...
end;


Dans ce code vous apprendrez, en plus, à:
effectuer des surcharges de composant, de méthodes, de procédures et fonctions.
centraliser les événements OnClick (jusqu'à 11 évènements sur une procédure)



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture [ASTUCE] COMMENT VOIR UN ITEM, D'UNE LISTBOX, TRONQUÉ DANS U...
Source avec Zip Source avec une capture TEXTE GRAPHIQUE AVEC CONTOUR, OMBRE ET TEXTURE EN API VERSIO...
Source avec Zip Source avec une capture TEXTE GRAPHIQUE AVEC CONTOUR, OMBRE ET TEXTURE EN API
Source avec Zip Source avec une capture ROTATION (RAPIDE) DE BITMAP (À 360°) EN PUR GDI
Source avec Zip Source avec une capture EFFETS ZOOM & MIROIR SUR BITMAP

 Sources de la même categorie

Source avec Zip Source avec une capture EFFET VITRE ET THUMBNAILS SOUS VISTA par Bacterius
Source avec Zip Source avec une capture ANAGLYPHEUR OU COMMENT VOIR EN RELIEF LES STÉRÉOSCOPES ANCES... par jfs59
Source avec Zip Source avec une capture DÉFORMER UNE IMAGE AUX DIMENSIONS D'UN QUADRANGLE QUELCONQUE... par FFCAST
Source avec Zip Source avec une capture THREAD ET BITMAP (DESSIN AU CRAYON) par barbichette
Source avec Zip Source avec une capture ÉCRAN DE VEILLE FEU D'ARTIFICE par barbichette

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture RÉGLE TRANSPARENTE POUR MESURER UN OBJET ECRAN par dubois77
Source avec Zip Source avec une capture ALPHA UTILS par Bacterius
Source avec Zip Source avec une capture FENÊTRE UN PEU CUSTOMISÉE par rt15
Source avec Zip Source avec une capture TRANSPARENCE DANS LA FORM (TROUS) par JackNUMBER
Source avec Zip Source avec une capture TREEVIEW AVEC ALPHABLENDING par Gaadek

Commentaires et avis

Commentaire de f0xi le 18/04/2009 15:09:51 administrateur CS 10/10

Felicitation, tu viens de reinventer le PNG sans compression :D
hahaha

en tout cas c'est pas mal, code propre et utile.

Commentaire de cirec le 18/04/2009 15:18:51 administrateur CS

mdr
oui c'est vrai ... j'avais la compression mais un problème lors de la lecture (décompression) du flux sous D7 .. à cause de la ZLib :( j'ai donc retiré cette option mais
avec D2009 ça fonctionne très bien par contre. et la compression est meilleur qu'en PNG

content que ça te plaise ... Merci pour l'appréciation.

Commentaire de Bacterius le 18/04/2009 15:54:57

Bizarre j'ai eu la même idée il y a quelques jours, mais sous la forme d'un composant non-visuel qui enveloppait un fichier bitmap 32 bits ... pas pensé  àsurcharger la classe TBitmap ... enfin bref ça marchait (pas très ergonomique dans l'utilisation), mais je ne m'était pas attardé sur la compression. Bref j'avais abandonné ce projet.
Je crois bien que je vais essayer de le reprendre, en utilisant les techniques que j'aurai apprises dans ce source ... je la mets en favoris pour une lecture ultérieure, pas vraiment le temps maintenant ... Mais ça a l'air très intéressant (tout ce qui est image est cool).

Cordialement, Bacterius !

PS : tu as posté cette source graçe à un thread de forum vieux de plusieurs mois ? ^^

Commentaire de f0xi le 18/04/2009 17:49:51 administrateur CS

pou la ZLib, utilise la ZLibEx

Commentaire de Bacterius le 18/04/2009 18:13:34

J'ai mis une source qui est supposée s'inscrire dans la continuité de ta source Cirec. Le bug du code desactivé sans raison semble se poursuivre ...

Cordialement, Bacterius !

Commentaire de cirec le 18/04/2009 19:25:13 administrateur CS

Bon je l'ai activé mais c'est pas trop dans la ligné ...

quand on reprend un code c'est pour l'améliorer ... pas l'inverse ... non !!!

Commentaire de Bacterius le 18/04/2009 22:52:56

Merci Cirec pour la suppression :)

Cordialement, Bacterius !

Commentaire de Bacterius le 18/04/2009 23:50:47

Bon voilà je me suis rattrapé sur une autre source concoctée pendant le reste de l'après-midi et ce soir ! Plus de bitmaps, je pense être en terrain à peu près connu sur ce coup-là ... quand-est-ce que ce bug va être réparé ?
Bon j'espère que cette source sera plus intéressante :)

Cordialement, Bacterius !

Commentaire de Nicolas___ le 19/04/2009 16:43:46

c'est donc de ça que tu me parlais Cirec ...
en effet , c'est bien différent ^^

j'ai pas delphi ici mais je garde sous la main ;)

Nico

Commentaire de simonpelloquin le 20/04/2009 10:29:43 10/10

Salut Cirec,

Merci pour cette source très intéressante. Pourrais-tu m'expliquer un peu plus en détail où se trouve la surcharge du TBitmap ?
J'avais vu, il y a déjà un bout de temps, une source très utile de DelphiProg qui permet de "dériver" des composants en déclarant un type sur une unité TComboBox = Class(MonCombo.TComboBox).
Du coup, j'ai fait quelques unités pour ajouter des fonctions à certains composants (CheckListBox, DateTimePicker, IDFTP...). Mais je suis obligé d'appeler cette dérivation sur chaque unité où je pose ces composants.
Ta méthode me semble permettre d'enregistrer définitivement les modifications de la classe. J'aimerais donc bien comprendre comment tu fais pour essayer de l'appliquer à mes modifs de composants.

Pour illustrer (et éclairer ?) ma question, je joins un exemple de modif du IDFTP

unit UMdf_IDFTP;

interface
         uses IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdFTP;
type
    TIdFTP = class(IdFTP.TIdFTP)
    Published
             procedure LockDir(ADir : String);
             procedure UnlockDir(ADir : String);
    end;

implementation
procedure TIdFTP.LockDir(ADir : String);
begin
     Site('CHMOD 555 '+ ADir);
end;

procedure TIdFTP.UnlockDir(ADir : String);
begin
     Site('CHMOD 755 '+ ADir);
end;

Commentaire de jeantentou le 20/04/2009 11:41:05

merci à Cirec
cette source est bien plus "globale" que tout ce que j'ai pu trouver ou faire sur ce sujet. Et en plus, c'est rapide!
JP

Commentaire de jeantentou le 22/04/2009 06:46:52

sauf erreur de ma part, ta remarque

************************************
en revanche ceci ne pose aucun problème:
var aBMP : TBitmap;
begin
  aBMP := TBitmap.Create;
  aBMP.Opacity := 180;
  ...
end;
************************************

n'est valable que dans une procedure, mais pas en variable globale
JP

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

pas de transparence sous win98 [ par vib ] J'ai testé la propriété transparent d'une form. Ca marche trés bien sur 2000 mais pas sur 98.Est ce que quelqu' un sait pourquoi ? Et existe t il une Dessiner avec transparence [ par fabiin ] Salutvoila,g un 2 TBItmap;et je voudrai dessiner l'un sur l'autre et où une couleur du premier devien transparente kan je dessinepour le moment j'util DelphiX: transparence et optimisation [ par Vin-s ] Salut à tous,Le problème est des plus simple.La fonction directX de dessin par transparences: Drawalphaest tres, tres lentes... les Frames Par Seconde Transparence d'une form [ par Programmeur1988 ] Bonjour A Vous ! j'aimeais Savoir Comment Faire Pour Que La Form De Delphi Soit Transparent Lorsque Nous Metton Le Projet En Run ! Example Je Fait un Transparence [ par JackTheRipp3r ] Salut tout le monde, j'ai une question à poser, (sinon ce message n'exiqsterait pas), c'est un peu logique, bon !Voilà, j'ai dans l'inspecteur d'obje Opacité d'une fenêtre [ par VBAngel ] Bonjour, je voudrais savoir s'il y a un moyen de régler l'opacité d'une fenêtre ??? (à la sauce WinAmp 3)Merci d'avance! Transparence TImage [ par PoPoV83 ] Salut tout le mondeAlors voila,j'ai une Form avec un TImage ou je dessine des traits dont les coordonnees sont calculees lorsque je clique sur un bout comment faire une BITMAP sans transparence sur un TSpeedButton ? [ par juliop ] helloje pense ke tout est ds la question, sachant ke j'ai deja essayé :speedbutton1.glyph.transparent := false;ou meme modif a la main la transparence Mettre une TImage en ALpha [ par juliop ] helloje viens de m'apercevoir k'une TImage n'a pas la propriete Alpha !! malheureusement j'en ai besoin . . .kelle est votre solution miracle ? :Dmerc Transparence d'une form [ par alexis2015 ] Bonjour j'aimerai bien pouvoir faire transparaitre ma form à un certain % de transparence ( genre dégradé ) d'une part, d'autre par effectuer un dégrd


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales