Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2015, 18:15   #31
Должно быть имя?
Пользователь
 
Регистрация: 11.04.2015
Сообщений: 68
По умолчанию

Цитата:
Сообщение от ZuBy Посмотреть сообщение
Сделай изображение монохромным потом будут цвета совпадать
еще бы знать как я тут просто обрезать изображения не могу Хотя я уже нашел нужные пиксели, тут я и узнал что чтения не сверху в низ, а на оборот
Должно быть имя? вне форума Ответить с цитированием
Старый 16.05.2015, 04:34   #32
Должно быть имя?
Пользователь
 
Регистрация: 11.04.2015
Сообщений: 68
По умолчанию

У меня проблема, после выполнения этого кода, на всем пк пропадает прозрачность картинок! Где косяк ?

Код:
unit Unit1;

interface

uses
  Winapi.Windows, Vcl.Forms, Vcl.Dialogs, FastDIB, System.SysUtils,
  System.Classes, Vcl.ExtCtrls, Vcl.Controls, jpeg, Vcl.StdCtrls, Graphics ;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;
  GameFast:TFastDIB;
  GameHandle:HWND;


implementation

{$R *.dfm}

function ScrWindows(Wnd:HWND; SrcDC: HDC; X, Y, Width, Height,
                            XSrc, YSrc: Integer; Rop: DWORD = SRCCOPY): Boolean;
Var
  DC : HDC;
begin
  Result := false;
  DC := GetDC(Wnd);
  if DC <> 0 then
  begin
    if BitBlt(SrcDC, X, Y, Width, Height, DC, XSrc, YSrc, Rop) then
      Result := true;
    ReleaseDC(Wnd, DC);
  end;
end;

function GetHandleTRect(GHandle:HWND; out Rect:TRect):Boolean;
begin
  Result := False;
  if IsWindow(GHandle) then
    Result := Winapi.Windows.GetClientRect(GHandle, Rect);
end;

function GetGameScr(out Faft : TFastDIB; ClWnd:PAnsiChar):Boolean;
var
  RectWidth, RectHeight : Integer;
  Rect                  : TRect;
begin
  Result := false;
  GameHandle := FindWindowA(ClWnd, nil);
  if GetHandleTRect(GameHandle, Rect) then
  begin
    RectWidth := Rect.right - Rect.left;
    RectHeight := (Rect.bottom - Rect.top) div 2;
    Faft := TFastDIB.Create(RectWidth, RectHeight, 24);
    Result := ScrWindows(GameHandle, Faft.hDC, 0, 0, RectWidth, RectHeight, 0, RectHeight);
    if not Result then
      FreeAndNil(Faft);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Faft : TFastDIB;
begin
  if GetGameScr(Faft, '5th Street') then
  begin
    Faft.SaveToFile('TestScr.bmp');
    FreeAndNil(Faft);
  end;
end;


end.
Изображения
Тип файла: jpg bandicam 2015-05-16 06-24-39-945.jpg (17.7 Кб, 51 просмотров)

Последний раз редактировалось Должно быть имя?; 16.05.2015 в 04:50.
Должно быть имя? вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с изображениями ignat129 Общие вопросы C/C++ 1 11.04.2012 00:05
Библиотека для работы с изображениями saippuakauppias Visual C++ 10 20.02.2011 20:40
работа с изображениями викталик Помощь студентам 0 03.05.2009 23:58
Методы определения контуров при работе с изображениями Евгений4 Помощь студентам 0 03.05.2009 16:51