powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Глюк при копировании Image в другой Bitmap
6 сообщений из 6, страница 1 из 1
Глюк при копировании Image в другой Bitmap
    #40116725
NikolasGood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с глюком которого никогда не замечал/встречал.

Есть картинка в img1
Если я её копирую в новый созданный BitMap1

Код: pascal
1.
BitMap1:= img1.Picture.Bitmap;



то разумеется он содержит в себе пиксели этой картинки. Всё правильно.
Но если я меняю картинку в img1 через
Код: pascal
1.
CopyRect();



то и в том новом BitMap1 она тоже меняется, хотя я больше не обновлял его пиксели. Я хочу чтобы картинка в BitMap1 менялась только когда я это назначаю, а не каждый раз как меняется в img1

Почему так и как от этого избавится?
...
Рейтинг: 0 / 0
Глюк при копировании Image в другой Bitmap
    #40116726
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
NikolasGood
Столкнулся с глюком которого никогда не замечал/встречал.

Есть картинка в img1
Если я её копирую в новый созданный BitMap1

Код: pascal
1.
BitMap1:= img1.Picture.Bitmap;



ты не копируешь картинку, в BitMap1 у тебя просто ссылка ровно на тот же битмап.

Чтобы скопировать, нужно примерно так:

Код: pascal
1.
2.
BitMap1 := TBitmap.Create ;
Bitmap1.Assign(img1.Picture.Bitmap) ;
...
Рейтинг: 0 / 0
Глюк при копировании Image в другой Bitmap
    #40116727
NikolasGood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
defecator, Спасибо, я так и думал что проблема в программисте )))
...
Рейтинг: 0 / 0
Глюк при копировании Image в другой Bitmap
    #40116730
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator
ты не копируешь картинку, в BitMap1 у тебя просто ссылка ровно на тот же битмап.

Плюсом еще и утечки памяти.

Лучше смотреть в сторону .Assign
...
Рейтинг: 0 / 0
Глюк при копировании Image в другой Bitmap
    #40116736
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanЛучше смотреть в сторону .Assign

Который, вообще-то, скопирует только Handle.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Глюк при копировании Image в другой Bitmap
    #40116773
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
wadmanЛучше смотреть в сторону .Assign

Который, вообще-то, скопирует только Handle.
Это не страшно.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure TBitmap.Assign(Source: TPersistent);
var
  DIB: TDIBSection;
begin
  if (Source = nil) or (Source is TBitmap) then
  begin
    FreeContext;
    EnterCriticalSection(BitmapImageLock);
    try
      if Source <> nil then
      begin
        TBitmap(Source).FImage.Reference;



Код: pascal
1.
2.
3.
4.
procedure TSharedImage.Reference;
begin
  Inc(FRefCount);
end;
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Глюк при копировании Image в другой Bitmap
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]